数据库运维
记录DBA学习成长历程

MongoDB复制集管理操作

查看复制集状态

rs.status(); //查看整体复制集状态
rs.isMaster(); // 查看当前是否是主节点
rs.conf(); //查看复制集配置信息

添加删除节点

rs.remove("ip:port"); // 删除一个节点
rs.add("ip:port"); // 新增从节点
rs.addArb("ip:port"); // 新增仲裁节点
rs.remove("10.0.0.200:28019"); 
rs.add("10.0.0.200:28020");
rs.addArb("10.0.0.200:28019"); 
[mongod@db01 ~]$ mongod -f /mongodb/28019/conf/mongod.conf
节点删除之后再用此节点添加,需要重启mongod.conf

特殊从节点

arbiter节点:主要负责选主过程中的投票,但是不存储任何数据,也不提供任何服务
hidden节点:隐藏节点,不参与选主,也不对外提供服务。
delay节点:延时节点,数据落后于主库一段时间,因为数据是延时的,也不应该提供服务或参与选主,所以通常会配合hidden(隐藏)
一般情况下会将delay+hidden一起配置使用

配置延时节点

一般延时节点也配置成hidden
cfg=rs.conf() 
cfg.members[3].priority=0
cfg.members[3].hidden=true
cfg.members[3].slaveDelay=120
rs.reconfig(cfg) 
中括号里面的数字表示为rs.conf()从上往下数的序列号
------------------------------------
取消以上配置
cfg=rs.conf() 
cfg.members[3].priority=1
cfg.members[3].hidden=false
cfg.members[3].slaveDelay=0
rs.reconfig(cfg) 
配置成功后,通过以下命令查询配置后的属性
rs.conf(); 
------------------------------------
主库宕机,28018从库变为主库
[mongod@db01 ~]$ mongod -f /mongodb/28017/conf/mongod.conf --shutdown
[mongod@db01 ~]$ mongo --port 28018 admin
my_repl:PRIMARY> 
主库启动,自动变为从库
[mongod@db01 ~]$ mongod -f /mongodb/28017/conf/mongod.conf
[mongod@db01 ~]$ mongo --port 28018 admin
my_repl:PRIMARY> rs.status()

副本集其他操作命令

副本节点默认不可读写,设置副本节点可读:在副本节点执行
my_repl:SECONDARY> rs.slaveOk()

查看副本节点(监控主从延时)

my_repl:SECONDARY> rs.printSlaveReplicationInfo()
source: 10.0.0.200:28017
syncedTo: Thu Oct 29 2020 14:04:58 GMT+0800 (CST)
0 secs (0 hrs) behind the primary 
source: 10.0.0.200:28020
syncedTo: Thu Oct 29 2020 14:02:58 GMT+0800 (CST)
120 secs (0.03 hrs) behind the primary
赞(0)
MySQL学习笔记 » MongoDB复制集管理操作