ADDRES,IPADDR为192.168.56.101、192.168.56.102、192.168.56.103
192.168.56.101 redis1 redis1
192.168.56.102 redis2 redis2
192.168.56.103 dis3 redis3
下载mongodb-linux-x86_64-amazon2-4.0.2.tar
tar -C /opt/ -xvf mongodb-linux-x86_64-amazon2-4.0.2.tar
mkdir -p /data/db
注:运行前需要安装glibc-2.18与openssl
cd /opt/mongodb-linux-x86_64-amazon2-4.0.2/bin
4. 配置mongodb副本集
./mongod --replSet myapp --bind_ip 0.0.0.0
在192.168.56.101上启动shell, 执行
./mongo
启动shell,连接到192.168.56.101的mongodb,运行initiate命令
通过rs.add()添加其他两个成员
运行db.isMaster()查看副本集的摘要信息
要看到每个节点的状态信息,可以用rs.status()方法
101虚拟机shell中执行
>use test
switched to db test
> db.products.insert({itemId:"12345","name":"Cooler","price":"100.0"})
在192.168.56.102中启动mongodb的shell
mongo
myapp:SECONDARY>
因为SECONDARY是不允许读写的 ,所以要执行
myapp:SECONDARY> rs.slaveOk()
myapp:SECONDARY>use test
switched to db test
myapp:SECONDARY> db.products.find()
{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }
验证自动故障转移,在192.168.56.101上杀掉主节点,ctrl-c或kill , 也可以连上主节点,在Shell里运行db.shutdownServer(),
启动192.168.56.102的shell(bin/ mongo)看到提示符已经变为
myapp:PRIMARY>
加入一条新的数据
myapp:PRIMARY> db.products.insert({itemId:"12346","name":"Apple","price":"200.0"}
myapp:PRIMARY> db.products.find()
{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }
{ "_id" : ObjectId("5b9a347e07f6cbbb9244cb37"), "itemId" : "12346", "name" : "Apple", "price" : "200.0" }
启动192.168.56.101的mongdb
启动192.168.56.101的mongdb的shell,可以看到这101已经变成SECONDARY
myapp:SECONDARY>
shell里执行
myapp:SECONDARY> rs.slaveOk()
myapp:SECONDARY> use test
myapp:SECONDARY> db.products.find()
{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }
{ "_id" : ObjectId("5b9a347e07f6cbbb9244cb37"), "itemId" : "12346", "name" : "Apple", "price" : "200.0" }
102上新加的数据已经可以在101上查到