여기서는 config server를 교체할 때 hostname을 교체하는 방식에 대해 설명한다.

hostname이 바뀌지 않고 단지 하드웨어만 바뀌는 형태라면 아래 링크 참조.

http://docs.mongodb.org/manual/tutorial/replace-config-server



[주의사항]

config server 교체시 downtime이 발생하므로 신중할 것.




1. balancer 중지

// balancer 중지

mongos> sh.stopBalancer()

Waiting for active hosts...

Waiting for the balancer lock...

Waiting again for active hosts after balancer is off...

// 확인

mongos> sh.getBalancerState()

false


2. 제거될 config server shutdown

// config server로 mongo shell 접속

[root@config001]# /home/mongodb/bin/mongo localhost:27019

 

configsvr> use admin

switched to db admin

configsvr> db.shutdownServer()

Tue Jun 30 10:23:41.260 DBClientCursor::init call() failed

server should be down...

Tue Jun 30 10:23:41.267 trying reconnect to localhost:27019

Tue Jun 30 10:23:41.268 reconnect localhost:27019 failed couldn't connect to server localhost:27019


3. 제거될 config server의 data를 교체될 서버로 복사

config server dbpath는 /home/mongodb/config01 라고 가정.

[root@config001]# rsync -az /home/mongodb/config001 config-004.bloodguy.com:/home/mongodb/


4. 교체될 config server 시작

[root@config004]# /home/mongodb/bin/mongo -f /home/mongodb/conf/config004.conf



이 시점까지도 balancer 동작과 chunk split 외의 read/write는 정상동작.

5번 시점부터 downtime이 발생하게 되는데, 

최소한의 downtime을 위해 5~9번까지의 과정은 스크립트로 만들어서 실행하는 것을 권장. 

(제정신이라면 그래야만 한다)


5. 나머지 모든 mongod, mongos 프로세스 shutdown


6. shard mongod 재시작


7. 나머지 2개의 config server 재시작


8. 모든 mongos 설정의 config server를 교체한 hostname이 적용된 걸로 변경.


9. 모든 mongos 재시작


10. balancer 재가동

// balancer 재가동

mongos> sh.startBalancer()

// 확인

mongos> sh.getBalancerState()

true







[참고]

http://docs.mongodb.org/manual/tutorial/migrate-config-servers-with-different-hostnames







Posted by bloodguy
,