MongoDB主从复制攻略
什么是MongoDB主从复制
MongoDB的复制机制是指将一台Primary节点的数据自动同步到一个或多个Secondary节点的过程,其中Primary节点是一个可写的节点,而Secondary节点只有在Primary节点宕机或者其他情况下才会变成可写节点。
主从复制原理
MongoDB的主从复制是通过Oplog来实现的,Oplog是一种特殊的集合,用来记录所有的更新操作。其原理为:在Master节点上产生了一个新的数据集合或者更新了一个数据,它会先在Master节点的数据文件中进行处理,然后再把这个数据写入到Oplog中。而Slave节点会不断的从Master节点的Oplog中读取新写入的数据,并在自己的机器上执行同样的操作,从而达到数据的同步。
主从复制配置
步骤一:创建Keyfile
在Master和Slave节点上都需创建Keyfile,用来进行节点的身份验证。
$ umask 077
$ echo '<YourPrivateKey>' > /opt/mongo/mongodb-keyfile
# YourPrivateKey:自定义的私有key,不能包含多余字符,长度不少于6。
注意:File Permissions必须为400:
$ chmod 400 /opt/mongo/mongodb-keyfile
步骤二:指定Replication Set
在Master节点的MongoDB配置文件mongod.conf
中指定replication.replSetName
:
replication:
replSetName: rs0
步骤三:启动MongoDB
在Master和Slave节点上启动MongoDB。
步骤四:初始化副本集
在Master节点上:
$ mongo --eval "rs.initiate()"
初始化命令可以自动完成其他节点的加入。
步骤五:添加Secondary
在Master节点上使用以下命令添加Secondary节点:
$ mongo --eval "rs.add('192.168.0.150:27017')"
其中192.168.0.150:27017
为Slave节点的信息。
备份与恢复数据
主从复制架构可以实现数据的自动备份,在Slave节点上可以随时切断与Master节点的连接,从而进行数据备份。
在Slave节点上使用mongodump进行数据备份:
$ mongodump --host 192.168.0.140 --port 27017 --out /backup/mongodb/
其中192.168.0.140:27017
为Master节点信息,/backup/mongodb/
为备份数据存储路径。
在恢复数据时,可以在Slave节点上先停止MongoDB的服务,然后使用mongorestore进行数据恢复:
$ mongorestore --host 192.168.0.150 --port 27017 /backup/mongodb/
其中192.168.0.150:27017
为Slave节点信息,/backup/mongodb/
为备份数据存储路径。
注意事项
- 在配置每个节点的mongod.conf文件时,需要将bindIp指定为本机的ip地址,如:
net:
bindIp: 192.168.0.140
port: 27017
- 存放Oplog数据的目录不能使用NFS挂载,需要在每个节点上均创建本地目录,并确保每个节点的配置文件中都配置正确。
示例一:新建集合
在Master节点新建集合test:
$ mongo
> use test
> db.createCollection("user")
> db.user.insert({name:'Lucy',age:'18'})
在Slave节点上验证:
$ mongo
> use test
> db.user.find()
{ "_id" : ObjectId("57cd36d40dae2a46fd1bd53e"), "name" : "Lucy", "age" : "18" }
示例二:删除数据
在Slave节点中删除数据:
> use test
> db.user.remove({name:'Lucy'})
在Master节点中验证:
> use test
> db.user.find()
参考链接
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mongodb主从复制_动力节点Java学院整理 - Python技术站