您的位置:首页 > 数据库 > Mongodb

mongodb进阶(3):复制的认证和oplog

2014-03-26 14:24 225 查看

认证

上面的例子中,我们可以看到,如果可以访问到主服务器地址,那么就可以随时给主服务器动态添加一个复制从服务器,这很容易造成问题。所以,应该为复制添加必要的认证。

mongodb的复制认证有固定的规律:

首先,它会去寻找local库中的“repl"名字的用户

其次,如果”repl“用户不存在,则会去取local.system.users集合中的第一个用户当作复制认证用户

明白上面的规律,那么我们应该为主从复制或者副本集中的每一个节点设置相同的repl用户和密码。

use local
db.addUser("repl","password")


oplog

前两篇中的复制,运行过程都是类似的。

第一,初始化完成之后进行同步,同步会把主机上所有的数据复制过来,操作非常耗时。

第二,同步完成之后,会定时去取主机上的oplog,具体来说,oplog是固定大小的,每次oplog满后,都会去往从机映射。

第三,从机得到oplog,对本机同步过来的数据进行操作。操作日志的同步相比第一步的操作会比较省资源。

但是,上面的过程有时会出现问题,比如:oplog设置的值较小,从机还没有进行完上一次操作的映射,而oplog就已经满了。那么运行一段时间,从机就会被主机”落下“,这个时候,从机就会从主机再次进行完整的同步。同步操作非常耗资源,就会影响整体的响应性能。

所以,应该配置oplog为适当的值,尽量避免完全同步操作的发生。

查看复制设置和状态

db.printReplicationInfo()
db.printSlaveReplicationInfo()
修改oplog大小比较麻烦,

1.停掉主服务器,删除掉local数据库文件

2.用新的--oplogSize参数启动mongodb

3.所有从机使用--autoresync重启,或者每台从机手动进行同步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: