标签:保留 搭建 home add 准备 sla 类型 img 原来
概念图
可复制集需要至少3个以上的mongodb节点,其中有一个主节点promary,其余的为副本节点secondary
可复制集有三个角色:
关于仲裁者:
如果主节点+副本节点是偶数推荐添加仲裁者,如果主节点+ 副本节点是奇数可以不添加仲裁者。仲裁者将永远是仲裁者,而主要人员可能会退出并成为次要人员,而次要人员可能成为选举期间的主要人员。
正准备三个mongodb节点,我们先搭建一个主节点,2个副本节点的模式
修改配置mongo.conf
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/home/amber/mongodb/mongodb-001/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
dbPath: "/home/amber/mongodb/mongodb-001/data/db"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
#指定用于保存mongos或mongod进程的进程ID的文件位置,其中mongos或mongod将写入其PID
pidFilePath: "/home/amber/mongodb/mongodb-001/log/mongod.pid"
net:
#服务实例绑定所有IP,有副作用,副本集初始化的时候,节点名字会自动设置为本地域名,而不是ip
#bindIpAll: true
#服务实例绑定的IP
bindIp: 0.0.0.0
#bindIp
#绑定的端口
port: 27017
replication:
#副本集的名称
replSetName: myrs
mongodb-001
换成mongodb-002``mongodb-003
然后分别在mongodb-00X的根目录下执行启动命令
./bin/mongod -f ./conf/mongod.conf
检查进程
ps -ef|grep mongod
进入27017的那个mongod的客户端,并且执行
rs.initiate({
_id: "myrs", // 需要和replSetName的名称一致
version: 1,
members: [{ _id: 0, host : "192.168.xx.xx:27017" }]});
或者
rs.initiate({})
执行结果
提示:
1)“ok”的值为1,说明创建成功。
2)命令行提示符发生变化,变成了一个从节点角色,此时默认不能读写。稍等片刻,回车,变成主节 点。
再27017的mongod客户端,也就是主节点上执行192.168.xx.xx:27018
是副本节点的ip和端口
rs.add("192.168.xx.xx:27018")
rs.add("192.168.xx.xx:27019")
使用
rs.status()
就可以看到members会有三个节点了
再主节点插入一条数据
use article;
db.comment.insert({name: "amber"})
再从节点查看,结果
这是因为需要再从节点再次进行
rs.slaveok() // 确认当前节点是副本节点
db.comment.find(); // 查看当前数据
可以看到已经有数据了,这样一主二从的可复制成功了
如果关闭主节点,在从节点执行rs.status();
可以看到原来的主节点的health变成了0
27018变成了新的主节点
标签:保留 搭建 home add 准备 sla 类型 img 原来
原文地址:https://www.cnblogs.com/amberbar/p/13174642.html