认证
上面的例子中,我们可以看到,如果可以访问到主服务器地址,那么就可以随时给主服务器动态添加一个复制从服务器,这很容易造成问题。所以,应该为复制添加必要的认证。
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重启,或者每台从机手动进行同步。
本文介绍了MongoDB复制过程中认证的规则,强调了设置相同repl用户的必要性,以确保安全。同时,详细讨论了Oplog的工作原理,包括初始化同步、周期性同步以及可能遇到的问题。当Oplog大小不足时,可能导致从节点与主节点不同步,需要适当配置Oplog大小以减少全量同步。最后,给出了检查复制设置和状态的方法。
4925

被折叠的 条评论
为什么被折叠?



