在虚拟机上建立mongoDB复制集,一主两从。
主0:127.0.01:27017
从1: 127.0.0.1:27018
从2: 127.0.0.1:27019
首先,建立路径放置各个mongodb进程的数据文件、日志文件。
主0: mkdir -p data/db0
从1: mkdir -p data/db1
从2: mkdir -p data/db2
开启mongodb进程
mongod --port 27017 --dbpath data/db0 --logpath data/db0/db.log --replSet zwstest --fork
mongod --port 27018 --dbpath data/db1 --logpath data/db1/db.log --replSet zwstest --fork
mongod --port 27019 --dbpath data/db2 --logpath data/db2/db.log --replSet zwstest --fork
在另外的终端中登录
mongo --port 27017
配置文件
cfg={
_id:"zwstest",
members:[
{_id:0, host:'127.0.0.1:27017'},
{_id:1, host:'127.0.0.1:27018'},
{_id:2, host:'127.0.0.1:27019'}
]}
初始化
rs.initiate(cfg)
查看主从复制状态
rs.status()
一段时间后,现在所在终端的界面将会变为primary开头。
测试:在primary中插入一条数据,在从服务器中查看。
primary>use test
primary>db.book.insert({"name":"zhangsan"})
在另外的终端中登录
mongo --port 27018
secondary>rs.slaveOk()
secondary>use test
secondary>db.book.find()
失败情况:
1、在配置文件中加了configsvr: true
cfg={
_id:"zwstest",
configsvr: true,
members:[
{_id:0, host:'127.0.0.1:27017'},
{_id:1, host:'127.0.0.1:27018'},
{_id:2, host:'127.0.0.1:27019'}
]}
2、服务启动时加了 --configsvr
mongod --port 27019 --configsvr --dbpath data/db2 --logpath data/db2/db.log --replSet zwstest --fork
3、如果电脑关机了,下次只需执行开启mongodb进程即可,不需再配置,但在从服务器查询时,需rs.slaveOk()
mongod --port 27017 --dbpath data/db0 --logpath data/db0/db.log --replSet zwstest --fork
mongod --port 27018 --dbpath data/db1 --logpath data/db1/db.log --replSet zwstest --fork
mongod --port 27019 --dbpath data/db2 --logpath data/db2/db.log --replSet zwstest --fork