特殊从节点
简单介绍
arbiter节点:
主要负责选主过程中的投票,但是不存储任何数据,也不提供任何服务
hidden节点:
隐藏节点,不参与选主,也不对外提供服务。
delay节点:
延时节点,数据落后于主库一段时间,因为数据是延时的,也不应该提供服务或参与选主,所以通常会配合hidden(隐藏)
一般情况下会将delay+hidden一起配置使用
配置延时节点(一般延时节点也配置成hidden)
# 查看节点配置
my_repl:PRIMARY> rs.conf()
......
{
"_id" : 3,
"host" : "10.0.50.61:28020",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1, // 选主权重,数值越大,权重越高
"tags" : {
},
"slaveDelay" : NumberLong(0), // 延时的秒数
"votes" : 1
}
],
......
my_repl:PRIMARY>
# 在线修改命令可以修改节点配置,命令结构如下
cfg=rs.conf() //定义配置为cfg变量
cfg.members[2].priority=0 //定义权重为0,不参与选主
cfg.members[2].hidden=true //隐藏节点,不参与业务,应用端是看不到的
cfg.members[2].slaveDelay=120 //延时节点,单位秒(根据实际需求计算)
cfg.members[3].votes=0 //投票数为0
rs.reconfig(cfg) //重新加载配置
# 小细节:members[2] 括号内的数字,并不是对应rs.conf()查到的“_id”值,而是按照从上倒下,起始数字为0,数出来的结果。
# 把28020节点修改成 delay + hidden节点
my_repl:PRIMARY> cfg=rs.conf()
my_repl:PRIMARY> cfg.members[3].priority=0
0
my_repl:PRIMARY> cfg.members[3].hidden=true
true
my_repl:PRIMARY> cfg.members[3].slaveDelay=120
120
my_repl:PRIMARY> cfg.members[3].votes=0
0
my_repl:PRIMARY> rs.reconfig(cfg)
{
"ok" : 1,
"operationTime" : Timestamp(1603521419, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1603521419, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
}
my_repl:PRIMARY> 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();
副本集其他操作命令
查看副本集的配置信息
admin> rs.conf()
查看副本集各成员的状态
admin> rs.status()
++++++++++++++++++++++++++++++++++++++++++++++++
--副本集角色切换(不要人为随便操作)
admin> rs.stepDown()
注:
admin> rs.freeze(300) //锁定从,使其不会转变成主库
freeze()和stepDown单位都是秒。
+++++++++++++++++++++++++++++++++++++++++++++
设置副本节点可读:在副本节点执行
admin> rs.slaveOk()
eg:
admin> use app
switched to db app
app> db.createCollection('a')
{ "ok" : 0, "errmsg" : "not master", "code" : 10107 }
查看副本节点(监控主从延时)
admin> rs.printSlaveReplicationInfo()
source: 192.168.1.22:27017
syncedTo: Thu May 26 2016 10:28:56 GMT+0800 (CST)
0 secs (0 hrs) behind the primary
OPlog日志(备份恢复章节)