千家信息网

30分钟完成MongoDB复制集环境搭建

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,环境介绍:192.168.1.250 主 port=27408192.168.1.250 仲裁 port=27409192.168.1.251 备 port=27408[root@HE4 ~]# ta
千家信息网最后更新 2025年02月08日30分钟完成MongoDB复制集环境搭建



环境介绍:

192.168.1.250 主 port=27408

192.168.1.250 仲裁 port=27409

192.168.1.251 备 port=27408



[root@HE4 ~]# tar xvf mongodb-linux-x86_64-2.6.10.tgz

[root@HE4 ~]# mkdir -p /export/mongodb

[root@HE4 ~]# mkdir -p /export/mongodb/bin

[root@HE4 ~]# mkdir -p /export/mongodb/conf

[root@HE4 ~]# mkdir -p /export/mongodb/log

[root@HE4 ~]# mkdir -p /export/mongodb/data

[root@HE4 bin]# cd /root/mongodb-linux-x86_64-2.6.10/bin

[root@HE4 bin]# cp /root/mongodb-linux-x86_64-2.6.10/bin/* /export/mongodb/bin/

[root@HE1 bin]# vi /export/mongodb/conf/mongod.conf

port=27408dbpath=/export/mongodb/datalogpath=/export/mongodb/log/mongod.logfork=truelogappend=truekeyFile=/export/mongodb/key/mongodnohttpinterface=truereplSet=shard1[root@HE1 bin]# vi /export/mongodb/conf/arbiter.confport=27409dbpath=/export/mongodb/arbiterlogpath=/export/mongodb/log/arbiter.logfork=truelogappend=truekeyFile=/export/mongodb/key/arbiternohttpinterface=truereplSet=shard1


keyfile文件包括:

mongod,arbiter


创建一个生成keyfile的脚本

vi create_key.sh

cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]" | fold -w 10 |head -1 >/tmp/key.txtkeystring=`cat /tmp/key.txt`echo $keystring >/export/mongodb/key/mongodecho $keystring >/export/mongodb/key/arbiterchmod 600 /export/mongodb/key/*


启动服务器在主

[root@HE3 ~]#/export/mongodb/bin/mongod -f /export/mongodb/conf/mongod.conf

[root@HE3 ~]# /export/mongodb/bin/mongod -f /export/mongodb/conf/arbiter.conf

在从

[root@HE4 ~]#/export/mongodb/bin/mongod -f /export/mongodb/conf/mongod.conf



>config={_id:'shard1',members:[{_id:0,host:'192.168.1.248:27408'},{_id:1,host:'192.168.1.249:27408'},{_id:2,host:'192.168.1.248:27409',arbiterOnly:true}]}




>rs.initiate(config)

初始化rs.initiate(config),config是之前定义的名


主备库配置好后,备库查询

shard1:SECONDARY> use testswitched to db testshard1:SECONDARY> db.t1.find()error: { "$err" : "not master and slaveOk=false", "code" : 13435 }shard1:SECONDARY> rs.slaveOk()shard1:SECONDARY> db.t1.find(){ "_id" : ObjectId("5704c11d3e0651733bfdea23"), "x" : 1 }


rs.stauts()可以看状态,health:1代表健康,stateStr谁是我们的仲裁

想让主库降级成从库,rs.stepDown()


0