mongoDB主从复制
mongoDB主从复制搭建
一般情况下,我们通常在机器上安装了一个数据库,这时我们的数据都是存在这个数据库中的,如果有一天,因为一些不可控因素导致数据库宕机或者数据库的文件丢失,此时损失就很大了。针对于这种问题,我们希望有一个数据库集,在我们其中一个数据库进行插入的时候,其他数据库也能插入数据,这样其中一台服务器宕机了,也能够使我们的数据正常存取。
在MongoDB中,是通过replaction复制集来实现此功能的。
在Windows下实现复制集的方法:
创建复制集之前,把所有的mongo服务器都关掉
1、创建三个存储数据库的文件夹,用来保存数据文件
2.创建三个存储日志的文件夹,用来存储日志
3.打开cmd命令窗口,分别启动三个mongo服务器,绑定在三个不同的端口上:
# 第一个
mongod --dbpath D:\Application\mongoDB\data\db1 --logpath D:\Application\mongoDB\data\logs1\mongo1.log --port 27017 --replSet rs
# 第二个
mongod --dbpath D:\Application\mongoDB\data\db2 --logpath D:\Application\mongoDB\data\logs2\mongo2.log --port 27017 --replSet rs
# 第三个
mongod --dbpath D:\Application\mongoDB\data\db3 --logpath D:\Application\mongoDB\data\logs3\mongo3.log --port 27018 --replSet rs
# 需要注意的时 --dbpath 路径为你自己的实际路径
# --logpath 同上
# --port 随你指定 但是 不要占用 常用的端口
# 启动 之后不要 关闭自己的 cmd命令框
其中的--replSet就表示创建的数据集的名称,必须指定相同的名称才可以。
- 配置:用客户端连接27017端口的服务器,在这个下面配置
打印rsconf:var rsconf = { _id:'rs', members:[ {_id:0,host:'127.0.0.1:27017'}, {_id:1,host:'127.0.0.1:27018'}, {_id:2,host:'127.0.0.1:27019'} ] } # 注意这边的ip和端口 以你实际情况为准
如图所示:printjson(rsconf)
5.配置初始化
rs.initiate(rsconf)
6.现在已经配置成功了,我们可以在主机插入一条数据测试一下:
7.连接从机
在从机进行操作可以看到这样的提醒
执行:
rs.slaveOk()
接着我们就可以正常操作了
可以看到,主机上添加的数据,从机也已经有了。
ok,这样就搭建完成了,这样当我们的主机 挂掉之后,从机上拥有主机上的所有的数据,并且从机默认的顶替主机,不会造成其他的影响。