257_Mongodb_集合_副本集

网友投稿 547 2022-05-30

环境搭建测试

a. 规划

多实例:

(1)多个端口:28017、28018、28019、28020

(2)多套目录

su - mongod mkdir -p /MongoDB/28017/conf /mongodb/28017/data/mongodb/28017/log mkdir -p /mongodb/28018/conf /mongodb/28018/data/mongodb/28018/log mkdir -p /mongodb/28019/conf /mongodb/28019/data/mongodb/28019/log mkdir -p /mongodb/28020/conf /mongodb/28020/data/mongodb/28020/log

(3)配置文件内容准备

cat > /mongodb/28017/conf/mongod.conf <

257_Mongodb_集合_副本集

(4)启动多个实例备用

mongod -f /mongodb/28017/conf/mongod.conf mongod -f /mongodb/28018/conf/mongod.conf mongod -f /mongodb/28019/conf/mongod.conf mongod -f /mongodb/28020/conf/mongod.conf

b. 配置/设置复制集:

(1)1主2从,从库普通从库(PSS)

config = {_id: 'my_repl', members: [ {_id: 0, host:'10.0.0.51:28017'}, {_id: 1, host:'10.0.0.51:28018'}, {_id: 2, host:'10.0.0.51:28019'}] } rs.add({"_id":3,"host":"192.168.163.134:27019","priority":0,"hidden":true}) rs.initiate(config) # 文档格式 config ={ _id: "my_repl", #副本集的名称 version:1, members:[ #副本集的服务器列表 { _id: , #成员的ID host: , #成员的地址和端口 arbiterOnly: , true/false代表是否为仲裁节点, 也可以直接使用rs.addArb()方法添加 buildIndexes: , true/false 默认true 是否可以在该节点上建立索引,一旦设置无法更改,如要设置为false 选择priority为0的节点 hidden: , 隐藏节点,优先级和投票必须为0 priority: , 是优先级,默认为1 0~1000的数字,越大权限越高,优先级不为0则按照有大到小选primary tags: , 标签/文档集合必须是字符串,配合read preference使用{source:"rpt"}, db.collection.find().readPref(“nearest”,[‘source’:’rpt’]) slaveDelay: , 默认0 延迟从库配置 单位为秒 votes: 默认1 代表有投票权 }, {_id: ,.....}, {_id: ,.....} ] }

(2)1主1从1个arbiter(PSA)

config = {_id: 'my_repl', members: [ {_id: 0, host:'10.0.0.51:28017'}, {_id: 1, host:'10.0.0.51:28018'}, {_id: 2, host:'10.0.0.51:28019',"arbiterOnly":true}] } rs.initiate(config)

c  复制集管理操作

(1)查看复制集状态: rs.status(); //查看整体复制集状态 rs.isMaster(); // 查看当前是否是主节点 (2)添加删除节点 rs.add("ip:port"); // 新增从节点 rs.addArb("ip:port"); // 新增仲裁节点 rs.remove("ip:port"); // 删除一个节点 (3)特殊从节点的配置 • 优先级(priority 参数:0-1000): 优先级越高的节点越优先成为主节点。 优先级为0的节点无法成为主节点; • 隐藏(hidden 参数):复制数据,但对应用不可见。隐藏节点可以具有投票仅,但优先级必须为0; • 延迟(slaveDelay 参数):复制 n 秒之前的数据,保持与主节点的时间差 配置延时节点(一般延时节点也配置成hidden) cfg=rs.conf() cfg.members[1].priority=0 cfg.members[1].slaveDelay=120 cfg.members[1].hidden=true rs.reconfig(cfg) 改回来: cfg=rs.conf() cfg.members[2].priority=1 cfg.members[2].slaveDelay=0 cfg.members[2].hidden=0 cfg.members[2].votes=0 rs.reconfig(cfg) 配置成功后,通过以下命令查询配置后的属性 rs.conf();

副本集其他操作命令

--查看副本集的配置信息 admin> rs.config() --查看副本集各成员的状态 admin> rs.status() --副本集角色切换(不要人为顺便操作,有风险) admin> rs.stepDown() 注: admin> rs.freeze(300) //锁定从,使其不会转变成主库 freeze()和stepDown单位都是秒。 --设置副本节点可读:在副本节点执行 admin> rs.slaveOk()

replica_alex:PRIMARY> rs.config() { "_id" : "replica_alex", "version" : 1, "protocolVersion" : NumberLong(1), "writeConcernMajorityJournalDefault" : true, "members" : [ { "_id" : 0, "host" : "25.213.20.110:8635", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 1, "host" : "25.213.20.111:8635", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : false, "priority" : 1, "tags" : { }, "slaveDelay" : NumberLong(0), "votes" : 1 }, { "_id" : 2, "host" : "25.213.20.112:8635", "arbiterOnly" : false, "buildIndexes" : true, "hidden" : true, "priority" : 0, "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("6198a39baf56065a6f73fa18") } }

MongoDB

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:教你如何使用esp8266接入华为云物联网平台(IOTDA)(Arduino开发)
下一篇:手把手教你用ModelArts模型部署上线&在线推理(一)【我的华为云体验之旅】
相关文章