该文档是搭建2成员,1仲裁节点
1.创建副本目录
mkdir /usr/local/mongodb/data1
mkdir /usr/local/mongodb/data2
mkdir /usr/local/mongodb/data3
2.修改配置文件- 1/2/3都可以这样设置,修改下端口号即可
#数据文件路径
dbpath=/usr/local/mongodb/data1
#日志文件路径
logpath=/usr/local/mongodb/logs1/mongodb-err.log
#pid文件路径
pidfilepath=/usr/local/mongodb/logs1/master.pid
#设置每个数据库保存在一个单独目录
directoryperdb=true
#以追加方式记录日志
logappend=true
#mongodb绑定地址
bind_ip=127.0.0.1
#端口号-默认27017
port=27017
oplogSize=100
#以守护进程方式运行mongo即后台运行
fork=true
#禁用数据文件预分配(影响性能)
noprealloc=true
#使用较小的默认文件
smallfiles=true
#指定副本集
replSet=rs0
3.启动副本集
mongod —config mongodb1.conf
mongod —config mongodb2.conf
mongod —config mongodb3.conf
4.初始化副本集
#因为文档是2个成员一个仲裁节点,所以只用初始化2个成员的即可
rs.initiate( {
_id : “rs0”,
members: [
{ _id: 0, host: “127.0.0.1:27017” },
{ _id: 1, host: “127.0.0.1:27018” }
]
})
添加仲裁节点
rs.addArb(“127.0.0.1:27019”)
5.链接各个节点查看角色
mongo 127.0.0.1:27017
mongo 127.0.0.1:27018
mongo 127.0.0.1:27019
查看rs.status()
6.测试数据复制—主节点上操作
use db
show tables
db.cctv.insert({“name”:1})
db.cctv.find()
副节点查看
use db
show tables —报错,无法查看
7.模拟主副切换
ps -ef | grep mongo
kill -9 主节点pid
登陆副节点查看
rs.status()
已经切换过来,查看数据,已经同步过来
use db
show tables
db.cctv.find()
8.重新启动故障节点(删除1节点数据,模拟故障)
mongod —config mongdb1.conf
查看故障节点状态 已经成为备用了 SECONDARY
rs.status()
从库开启读操作
rs.slaveOk();
强制切换节点
1. 27018目前为主节点,执行
rs.freeze(120) #使其120秒内不会成为主节点
rs.stepDown(120) #强制切换节点
2.在27017上查看,已经成为主节点