mongodb主从同步在4.0版本以后已经不建议使用了,会提示主从同步已经不支持,但是4.0版本之前的还能使用,所以还是记录一下。
博主使用windows操作系统,mongodb3.2版本,通过修改端口进行本地测试操作
主从同步主要的操作步骤如下:
1、先搭建主数据库(127.0.0.1:27017)
在mongodb的bin目录中,cmd执行如下代码
mongod -bind_ip=127.0.0.1 -port 27017 -dbpath=F:\mongo\data\db -master
master表示这是个主数据库,bind_ip port设置主数据库的ip跟port -dbpath指定一个db存放路径
2、搭建从数据库(127.0.0.1:27018)
mongod -bind_ip=127.0.0.1 -port 27018 -dbpath=F:\mongo\data2\db -slave -source=127.0.0.1:27017
slave服务器主要使用slave参数表示这是从数据库,并通过source指定主数据库的ip。dbpath注意设置跟主数据库不同的路径。
这样就搭配好了,其中local数据库不能同步。
3、遇到的问题:
(1)Rollback Id is not initialized yet.
这个问题查不出为什么,一开始安装的时候是msi版本,可能是安装的时候出错了,重新换了个zip版本的就没有这个问题了
(2) --source 127.0.0.1:27017 != 127.0.0.27017 from local.sources collection
这个是因为一开始创建从数据库的时候,写错了source的ip,写成了127.0.0.27017,改完重新执行的时候,local数据库的sources collection 并不会被覆盖,保存的还是原先错误的那个ip。
因此我们需要将从数据库的local.sources的数据清空,再重新执行。
(3)从数据库执行查询的时候报: "errmsg" : "not master and slaveOk=false"
因为默认是不能查看从数据库数据的,可以执行以下代码就可以查看从数据库数据了。
rs.salveOk()
(4)从数据库除了local数据库以外,是不能增删其他数据库以及collection的。
但是local数据库是本地数据库,不受影响。
总结完了,后续要是有其他问题再来补充。。。