MongoDB复制集架构搭建
Posted 领域见识决定专业高度
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB复制集架构搭建相关的知识,希望对你有一定的参考价值。
创建目录
mkdir -p /data/r0 /data/r1 /data/r2
声明实例
./bin/mongod --port 27017 --dbpath /home/workspace/data/r0/ --smallfiles --replSet rsa --fork --logpath /home/workspace/logs/mongo0.log
./bin/mongod --port 27018 --dbpath /home/workspace/data/r1/ --smallfiles --replSet rsa --fork --logpath /home/workspace/logs/mongo1.log
./bin/mongod --port 27019 --dbpath /home/workspace/data/r2/ --smallfiles --replSet rsa --fork --logpath /home/workspace/logs/mongo2.log
增加配置
rsconf = {
_id:‘rsa’,
members:
[
{_id:0,
host:‘192.168.87.131:27017’
},
{_id:1,
host:‘192.168.87.131:27018’
},
{_id:2,
host:‘192.168.87.131:27019’
}
]
}
rs.initiate(rsconf);
测试
- 连接子节点 :./bin/mongo --port 27017
- use test
- db.test.user({uid:1,name:‘liliy’})
- 切换到从库 :./bin/mongo --port 27019
- use test
- show tables: Error: listCollections failed: { “note” : “from execCommand”, “ok” : 0, “errmsg” : “not master” }
- rs.slaveOk();
- show tables
MongoDB中你只能通过主节点将Mongo服务添加到副本集中, 判断当前运行的Mongo服务是否为主节点可以使用命令db.isMaster() 。
MongoDB的副本集与我们常见的主从有所不同,主从在主机宕机后所有服务将停止,而副本集在主机宕机后,副本会接管主节点成为主节点,不会出现宕机的情况。
复制集创建自动化脚本:
vim start.sh
#!/bin/bash
IP=192.168.119.128
NA=rs2
if [ $1 == \'reset\' ]; then
pkill -9 mongo
rm -rf /home/m*
exit;
fi
if [ $1 == \'repl\' ]; then
mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog
/usr/mongodb/bin/mongod --dbpath /home/m17 --logpath /home/mlog/m17.log --port 27017 --fork --smallfiles --replSet ${NA}
/usr/mongodb/bin/mongod --dbpath /home/m18 --logpath /home/mlog/m18.log --port 27018 --fork --smallfiles --replSet ${NA}
/usr/mongodb/bin/mongod --dbpath /home/m19 --logpath /home/mlog/m19.log --port 27019 --fork --smallfiles --replSet ${NA}
/usr/mongodb/bin/mongo <<EOF
use admin
rsconf = {
_id:\'rs2\',
members:
[
{_id:0,host:\'${IP}:27017\'},
{_id:1,host:\'${IP}:27018\'},
{_id:2,host:\'${IP}:27019\'}
]
}
rs.initiate(rsconf);
EOF
exit;
fi
执行自动化脚本:
sh start.sh reset
sh start.sh repl
输入命令: ./mongo 会自动连接到复制集中的主节点
1、if和[ ]之间要空格。
2、[ ]和\' \'之间要空格
3、\' \'和=之间要空格, 否则都会报错
参考资料:
http://www.cnblogs.com/skyrim/p/5098167.html
https://yq.aliyun.com/articles/64
注意的几点:
以上是关于MongoDB复制集架构搭建的主要内容,如果未能解决你的问题,请参考以下文章