测试环境:
MASTER(A):
172.16.3.176
/opt/mongodb/bin/mongod --master --config /opt/mongodb/conf/mongodb1.conf --oplogSize=256
config:
[root@db5 data1]# cat /opt/mongodb/conf/mongodb1.conf
port=5281
fork=true
logpath=/var/log/mongodb1.log
logappend=true
dbpath=/home/mongodb/data1
directoryperdb=true
auth=true
maxConns=1000
nohttpinterface=true
nssize=128
SLAVE(B):
172.16.3.33
/opt/mongodb/bin/mongod --slave --source 172.16.3.176:5281 --config /opt/mongodb/conf/mongodb1.conf
config:
[root@db-172-16-3-33 conf]# cat /opt/mongodb/conf/mongodb1.conf
port=5281
fork=true
logpath=/var/log/mongodb1.log
logappend=true
dbpath=/opt/mongodb/data1
directoryperdb=true
auth=true
maxConns=1000
nohttpinterface=true
nssize=128
1. Failing over to a Slave (Promotion) 这种情况一般发生在A机器不能访问或已经损坏的情况。不可逆
操作步骤:
1.1 关闭A
1.2 关闭B
1.3 删除B上的local库数据文件
1.4 启动B 带上--master参数
2. Inverting Master and Slave 这种情况一般发生在需要对A机器进行维护,需要把B作为MASTER使用。可以逆转
操作步骤:
2.1 禁止A机库写操作 ( 通过 lock HALT 住些操作 , db.runCommand({fsync:1,lock:1}) )
2.2 确保B机库与A机库完全同步
2.3 关闭B机库
2.4 删除B机库local数据库数据文件
2.5 启动B机器库 带上 --master参数
2.6 B机库上进入local,新建repl用户,密码保持和原来的一样 (假设开启了auth).
2.7 关闭B机库
2.8 关闭A机库,(确保不关闭写LOCK的情况下关库,保证)删除B机库LOCAL数据库文件,拷贝B机库的local数据目录到A机库.
2.9 启动B机器库 带上 --master参数
2.10 启动A机库 带上slave source 再加上 --fastsync 参数.