MongoDB复制选举原理及复制集管理(3)

简介:oplog即operations log简写,存储在local数据库中。oplog中新操作会自动替换旧的操作,以保证oplog不会超过预设的大小。默认情况下,oplog大小会占用64位的实例5%的可用磁盘
原理:主节点应用业务操作修改到数据���中,然后记录这些操作到oplog中,从节点复制这些oplog,然后应用这些修改。这些操作是异步的。如果从节点的操作已经被主节点落下很远,oplog日志在从节点还没执行完,oplog可能已经轮滚一圈了,从节点跟不上同步,复制就会停下,从节点需要重新做完整的同步,为了避免此种情况,尽量保证主节点的oplog足够大,能够存放相当长时间的操作记录

1).关闭从节点服务器

[root@redhat7_6 ~]# mongo --port 27018

kgcrs:SECONDARY> use admin
kgcrs:SECONDARY> db.shutdownServer() #关闭服务,从复制集成员退出来

2).修改从节点主配置文件

[root@redhat7_6 ~]# vim /etc/mongod2.conf

MongoDB复制选举原理及复制集管理

3).启动单实例

[root@redhat7_6 ~]# /etc/init.d/mongodb mongod2 start

MongoDB复制选举原理及复制集管理

4).备份当前节点所有oplog记录

[root@redhat7_6 ~]# mongodump --port 27028 --db local --collection 'oplog.rs'

port        #指定端口
db          #指定数据库
collection  #指定集合

5).更改oplog文件大小

[root@redhat7_6 ~]# mongo --port 27028

> use local
> db.oplog.rs.drop()  #删除oplog文件
> db.runCommand({ create: "oplog.rs", capped: true, size: (2 * 1024 * 1024 * 1024)}) #重建文件,指定2048M的空间

6).暂时关闭服务

> use admin
> db.shutdownServer()

7).修改从节点主配置文件

[root@redhat7_6 ~]# vim /etc/mongod2.conf

net:
  port: 27018  #约29行,把端口改成27018
replication:    #约37行,打开复制选项
    replSetName: kgcrs  #解开注释
    oplogSizeMB: 2048  #添加oplog日志文件大小2048MB

8).登录服务

[root@redhat7_6 ~]# /etc/init.d/mongodb mongod2 start
[root@redhat7_6 ~]# mongo --port 27018

kgcrs:SECONDARY> rs.printReplicationInfo()

9).进行主从切换

[root@redhat7_6 ~]# mongo --port 27017

kgcrs:PRIMARY> rs.freeze(30)        #暂停30秒不参加选举
kgcrs:PRIMARY> rs.stepDown(60,30)    #告知主节点交出主节点位置,然后维持从节点状态不少于60秒,同时等待30秒以使主节点和从节点日志同步

[root@redhat7_6 ~]# mongo --port 27018

MongoDB复制选举原理及复制集管理

五、部署认证复制

[root@redhat7_6 ~]# mongo --port 27018

1、创建用户

kgcrs:PRIMARY> use admin
kgcrs:PRIMARY> db.createUser({"user":"root","pwd":"123","roles":["root"]})

2、修改主配置文件

[root@redhat7_6 ~]# vim /etc/mongod1.conf

security:  #约33行,开启认证功能
  keyFile: /usr/bin/kgcrskey1  #指定验证文件路径。!!!注意实例1是kgcrskey1 ;实例2是kgcrskey2;实例3是kgcrskey3
  clusterAuthMode: keyFile    #指定验证模式,秘钥文件验证
[root@redhat7_6 ~]# vim /etc/mongod2.conf #依次第2、3、4实例都要添加上面句。!!!注意验证文件路径要修改

[root@redhat7_6 ~]# vim /etc/mongod3.conf
[root@redhat7_6 ~]# vim /etc/mongod4.conf

3、生成秘钥文件

[root@redhat7_6 ~]# cd /usr/bin/
[root@redhat7_6 bin]# echo "kgcrs key" > kgcrskey1
[root@redhat7_6 bin]# echo "kgcrs key" > kgcrskey2
[root@redhat7_6 bin]# echo "kgcrs key" > kgcrskey3
[root@redhat7_6 bin]# echo "kgcrs key" > kgcrskey4

4、更改目录权限

[root@redhat7_6 bin]# chmod 600 kgcrskey{1..4} #复制集对keyFile的权限有要求,最多到600

5、重启实例

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/64ec7c7ad5d25b3b41491790f7ca045a.html