Mongodb副本集-replicaset

mongo副本集-replica set

1.官网地址

https://docs.mongodb.com/manual/replication
https://docs.mongodb.com/manual/reference/method/rs.initiate/#rs.initiate

2.副本集角色

主节点			 负责读写
副本节点		同步主节点
仲裁节点		不是必需的,不存储数据,不参与竞主,只投票,不消耗什么资源

3.选举机制

大多数投票原则,存活的节点必须是副本集一半以上的数量

4.创建目录

mkdir -p /opt/mongo_2801{7,8,9}/{conf,log,pid}  
mkdir -p /data/mongo_2801{7,8,9}

5.创建配置文件

cat >/opt/mongo_28017/conf/mongodb.conf <<EOF
systemLog:
 destination: file   
 logAppend: true  
 path: /opt/mongo_28017/log/mongodb.log

storage:
 journal:
   enabled: true
 dbPath: /data/mongo_28017
 directoryPerDB: true
 wiredTiger:
    engineConfig:
       cacheSizeGB: 0.5 
       directoryForIndexes: true
    collectionConfig:
       blockCompressor: zlib
    indexConfig:
       prefixCompression: true

processManagement:
 fork: true
 pidFilePath: /opt/mongo_28017/pid/mongod.pid

net:
 port: 28017
 bindIp: 127.0.0.1,10.0.0.51

replication:
   oplogSizeMB: 1024 
   replSetName: dba
EOF

6.复制配置文件到其他节点

cp /opt/mongo_28017/conf/mongodb.conf /opt/mongo_28018/conf/
cp /opt/mongo_28017/conf/mongodb.conf /opt/mongo_28019/conf/

7.替换端口号

sed -i 's#28017#28018#g' /opt/mongo_28018/conf/mongodb.conf
sed -i 's#28017#28019#g' /opt/mongo_28019/conf/mongodb.conf

8.启动所有节点

mongod -f /opt/mongo_28017/conf/mongodb.conf
mongod -f /opt/mongo_28018/conf/mongodb.conf
mongod -f /opt/mongo_28019/conf/mongodb.conf

9.检查服务

ps -ef|grep mongo
netstat -lntup|grep mongo

10.初始化集群

mongo --port 28017
rs.initiate(
   {
      _id: "dba",
      version: 1,
      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" }
      ]
   }
)

11.主库插入数据测试

mongo --port 28017
db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

12.设置副本节点可读

方法1:临时生效

rs.slaveOk()

方法2:写入启动文件

echo "rs.slaveOk()" > ~/.mongorc.js

13.副本集常用命令

rs.config()
rs.status()
rs.isMaster()
rs.printReplicationInfo()
rs.printSlaveReplicationInfo()

posted @ 2022-05-20 12:01  hai起奈  阅读(31)  评论(0编辑  收藏  举报