MongoDB 副本集切换方法
1、rs.stepDown([stepdownSecs, catchUpSecs]) step down as primary (disconnects)
这个命令会将primary降级为Secondary节点
登陆primary节点
[root@127-0-0-1 conf]# mongo --port 2777 shard1:PRIMARY> show dbs admin 0.000GB config 0.000GB local 0.001GB yoon 0.000GB
通过 help 帮助查看各种命令
shard1:PRIMARY> rs.help() rs.status() { replSetGetStatus : 1 } checks repl set status rs.initiate() { replSetInitiate : null } initiates set with default settings rs.initiate(cfg) { replSetInitiate : cfg } initiates set with configuration cfg rs.conf() get the current configuration object from local.system.replset rs.reconfig(cfg) updates the configuration of a running replica set with cfg (disconnects) rs.add(hostportstr) add a new member to the set with default attributes (disconnects) rs.add(membercfgobj) add a new member to the set with extra attributes (disconnects) rs.addArb(hostportstr) add a new member which is arbiterOnly:true (disconnects) rs.stepDown([stepdownSecs, catchUpSecs]) step down as primary (disconnects) rs.syncFrom(hostportstr) make a secondary sync from the given member rs.freeze(secs) make a node ineligible to become primary for the time specified rs.remove(hostportstr) remove a host from the replica set (disconnects) rs.slaveOk() allow queries on secondary nodes rs.printReplicationInfo() check oplog size and time range rs.printSlaveReplicationInfo() check replica set members and replication lag db.isMaster() check who is primary reconfiguration helpers disconnect from the database so the shell will display an error, even if the command succeeds.
将primary降级为Secondary节点
shard1:PRIMARY> rs.stepDown()
这个命令会让primary降级为Secondary节点并维持30S,如果这段时间没有新的primary选举出来,这个节点重新加入进行选举
shard1:PRIMARY> rs.stepDown(30)
2、通过设置优先级
A.为了保证数据的一致性,必须先关闭应用的写服务
B.提升要升级为primary节点的Secondary节点的优先级
查看当前配置信息:
shard1:PRIMARY> rs.conf() { "_id" : "shard1", "version" : 4, "protocolVersion" : NumberLong(1), "writeConcernMajorityJournalDefault" : true, "members" : [ { "_id" : 0, "host" : "127.0.0.1:2777", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 3, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "127.0.0.1:3777", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "127.0.0.1:4777", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 } ], "settings" : { "chainingAllowed" : true, "heartbeatIntervalMillis" : 2000, "heartbeatTimeoutSecs" : 10, "electionTimeoutMillis" : 10000, "catchUpTimeoutMillis" : -1, "catchUpTakeoverDelayMillis" : 30000, "getLastErrorModes" : { }, "getLastErrorDefaults" : { "w" : 1, "wtimeout" : 0 }, "replicaSetId" : ObjectId("5f27de76c8d22581cdeb2f2e") } }
查看当前配置,存入config变量中
shard1:PRIMARY> config=rs.conf()
修改config变量,将第三组端口为4777的成员优先级设置为3
hard1:PRIMARY> config.members[2].priority = 3
配置生效
shard1:PRIMARY> rs.reconfig(config)
查看切换后的节点信息
shard1:PRIMARY> db.isMaster() { "hosts" : [ "127.0.0.1:2777", "127.0.0.1:3777", "127.0.0.1:4777" ], "setName" : "shard1", "setVersion" : 7, "ismaster" : true, "secondary" : false, "primary" : "127.0.0.1:4777", "me" : "127.0.0.1:4777", "electionId" : ObjectId("7fffffff0000000000000004"), "lastWrite" : { "opTime" : { "ts" : Timestamp(1596599298, 1), "t" : NumberLong(4) }, "lastWriteDate" : ISODate("2020-08-05T03:48:18Z"), "majorityOpTime" : { "ts" : Timestamp(1596599298, 1), "t" : NumberLong(4) }, "majorityWriteDate" : ISODate("2020-08-05T03:48:18Z") }.. ...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」