本文目的
为了在各个MongDB之间实现多节点之间的数据自动备份,提高容灾性能。MongoDB复制是将数据同步在多个服务器的过程。复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。
mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。mongodb各个节点常见的搭配方式为:一主一从、一主多从。主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
N 个节点的集群
任何节点可作为主节点
所有写入操作都在主节点上
自动故障转移
自动恢复
操作步骤
本文中使用同一个MongoDB实现两个节点的直接的备份,当然是有主、从的,但是这个主、从和一般的主从不一样,这里的主机爆掉之后,就会自动连接到丛机上继续使用数据。这就是集群的优势所在。
准备两个数据库
复制两个data目录:data与data1目录,也就是两个数据库目录。分别修改这两个data目录下的配置文件,分别为:
data中,/data/etc/mongodb.conf:
dbpath=data\db #数据库路径
logpath=data\logs\mongodb.log #日志输出文件路径
logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27017 #端口号 默认为27017
data1中,/data1/etc/mongodb.conf:
dbpath=data1\db #数据库路径
logpath=data1\logs\mongodb.log #日志输出文件路径
logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
journal=true #启用日志文件,默认启用
quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
port=27018 #端口号 默认为27018
启动两个mongoDB数据库
cmd中:
由于本文是在同一台机器上配置两个节点,所以两个节点的ip是相同的:
启动第一个数据库:
mongod --port 27017 --dbpath "\data" --replSet rs
启动第二个数据库:
mongod --port 27018 --dbpath "\data1" --replSet rs
添加将数据库添加到副本集中
登陆第一个数据库:
mongo 127.0.0.1:27017
以该数据库为主机,初始化副本集,初始化过程化过程中就会将该数据库作为主机加入到这个副本集中了。
初始化副本集:
>rs.initiat()
查看当前副本集的机器情况:
>rs.conf()
当前应该只有27017这个主机在这个副本集中。
然后再将丛机都加进来:
>rs.add("trilever-pc:27018")
再看当前副本集集群的情况,就会发现丛机已经加进来了。
登陆丛机:
mongo 127.0.0.1:27017
此时,丛机已经在副本集群中了,进行最后一个操作:
>rs.slaveok()
这样在主机上的操作就会同步到从机上了。
整个配置完毕。验证即可。