仓廪实则知礼节,衣食足则知荣辱。这篇文章主要讲述Mongodb副本集管理相关的知识,希望能为你提供帮助。
添加副本集节点
1、副本集最小架构副本集上一次配置完成,架构如下P-S-A,两个节点提供数据的访问,一个节点为仲裁节点(不存储数据),也是副本集的最小架构。
文章图片
2、正式环境建议使用:P-S-S架构
文章图片
3、添加新节点对于读多写少的业务,可以通过添加复制集节点来均衡读负载,新节点版本应和复制集成员保持一致。添加操作命令在Primary节点执行。数据库操作尽量在业务低峰期操作,如果数据量较大复制会很慢,如果oplog设置过小还会导致数据同步失败,修改oplog大小,也可以停掉一个secondary节点将数据复制到新节点,云主机可以做磁盘镜像方式,然后进行节点的添加,添加为隐藏节点程序不可见,待数据同步完成,在设置为可见节点设置为secondary节点。
命令:
rs.add( { host: "mongodb3.example.net:27017", arbiterOnly: true } ) //添加仲裁节点
rs.add( { host: "mongodbd4.example.net:27017", priority: 0 } ) //添加secondary节点,权重为0,
priority为0的节点,如果其它节点出现故障,该节点不能被选举成主节点(副本集节点个数尽量保持奇数)。
文章图片
3.1、添加延迟备份节点(如数据误删除,一小时内发现可以使用延迟节点进行恢复)
rs.add(
{
"_id" : <
num>
,//指定一个id
"host" : <
hostname:port>
,//新节点的ip:端口
"priority" : 0,//该节点权重为0
"slaveDelay" : <
seconds>
,//延迟复制,延迟Primary节点多少秒
"hidden" : true//设置为隐藏节点(程序员不可见)
})>
rs.add({_id:5,host:\'10.0.1.9:27040\',"slaveDelay":3600,"priority":0,"hidden":true,"buildIndexes":true});
//添加新节点延迟复制1小时,权重为0,该节点程序不可见,索引也进行同步
3.2、修改现有复制集节点信息
cfg = rs.conf()
cfg.members[1].priority = 0//权重设置为0
cfg.members[1].hidden = true//设置为隐藏节点
rs.reconfig(cfg)
test:PRIMARY>
rs.conf()
{
"_id" : "test",
"version" : 1,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "192.168.5.74:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 90,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "192.168.5.49:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 90,
"tags" : {},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 2,
"host" : "192.168.5.3:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 0,
"tags" : {},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
4、查看副本集复制是否有延迟
test:PRIMARY>
db.printReplicationInfo()
configured oplog size:23214.042724609375MB
log length start to end: 17722secs (4.92hrs)
oplog first event time:Fri Aug 27 2021 11:41:14 GMT+0800 (CST)
oplog last event time:Fri Aug 27 2021 16:36:36 GMT+0800 (CST)
now:Fri Aug 27 2021 16:36:38 GMT+0800 (CST)test:PRIMARY>
db.printSlaveReplicationInfo()
source: 192.168.5.74:27017
syncedTo: Fri Aug 27 2021 16:38:36 GMT+0800 (CST)
0 secs (0 hrs) behind the primary//和主节点同步没有延迟
test:PRIMARY>
5、更改同步源新添加节点默认的同步源为Primary节点,也可以手动设置从其它节点进行数据同步,可以设置从secondary节点进行数据同步,连接到新添加的节点,
test:SECONDARY>
use admin
test:SECONDARY>
db.getMongo().setSlaveOk()//默认不可读
mongo>
db.adminCommand( { replSetSyncFrom: "192.168.5.49:27017" })//设置新节点的同步源为
6、移除复制集节点【Mongodb副本集管理】移除节点操作需要谨慎,如正常运行的节点需要移除,先进行节点stop在进行移除。
test:PRIMARY>
rs.remove("192.168.5.49:27018")
{
"ok" : 1,
"operationTime" : Timestamp(1630056399, 1),
"$clusterTime" : {
"clusterTime" : Timestamp(1630056399, 1),
"signature" : {
"hash" : BinData(0,"58s85u53HFuEjB9vF2Ex1J/BDXk="),
"keyId" : NumberLong("7000949962682925057")
}
}
}
test:PRIMARY>
推荐阅读
- C语言进阶—— 动态内存开辟+柔性数组
- paip.java win程序迁移linux的最佳实践
- rpush(多平台统一消息推送系统)
- 赋能生态,合力同行!博睿数据成为光合组织成员单位
- 打开vscode好像打开了原神(vscode原神背景推荐,比博燃)
- 树莓派ubuntu系统RPi引脚库权限问题 不使用sudo操控RPi库方法
- 如何使用jQuery模拟Android样式锁定模式(拖放)
- 如何在使用jQuery的浏览器中长按键盘上显示额外的字符选择器
- 如何使用jQuery AJAX获得上载或下载的进度