MongoDB 副本集复制

MongoDB是当下比较流行的NoSQL 数据库.提供了副本集复制应对数据的可扩展性,可靠性及提供了隔离性. 下面讲讲一般情况下的副本集复制的配置。

1.环境

Centos 7
MongoDB 3.6

2.机器配置
----------------------------------------------------------------------------
IP hostname port path is arbiter
----------------------------------------------------------------------------
192.168.11.100 mongodbr0 27017 /data/replset1/r0 false
192.168.11.101 mongodbr1 27017 /data/replset1/r1 false
192.168.11.102 mongodbr2 27017 /data/replset1/r2 true

3.配置步骤
3.1 开放端口或关闭防火墙
firewall-cmd --permanent --add-port=27017/tcp
firewall-cmd --reload
3.2 在每台机器上建立对应的目录
mkdir -p /data/replset1/r0|r1|r2 ##不同的机器对应不同的目录,参考第二部分的path
mkdir -p /data/replset1/key
mkdir -p /data/replset1/log

修改每台机器的hosts
vi /etc/hosts 并添加如下内容

192.168.11.100 mongodbr0
192.168.11.101 mongodbr1
192.168.11.102 mongodbr2

3.3 复制MongoDB安装包到每台机器上,并解压
例如本例子解压到 /usr/local/mongodb
3.4 初始化复制集
进入到每个机器的 /usr/local/mongodb/bin/
分别执行如下的命令
./mongod --port 27017 --dbpath /data/replset1/r0 --logpath /data/replset1/log/r0.log --logappnd --fork --bind_id localhost,192.168.11.100 --replSet replset1

./mongod --port 27017 --dbpath /data/replset1/r1 --logpath /data/replset1/log/r1.log --logappnd --fork --bind_id localhost,192.168.11.101 --replSet replset1

./mongod --port 27017 --dbpath /data/replset1/r2 --logpath /data/replset1/log/r2.log --logappnd --fork --bind_id localhost,192.168.11.102 --replSet replset1

注意: --bind_id 一定要指明绑定的IP,因为每台机器可能有多个IP,所以要一定有这个参数,否则可能会报错

3.5 开始复制
进入任意一台机器,以 mongodbr0为例
3.5.1
/usr/local/mongodb/bin/mongo --port 27017
3.5.2
a.运行 rs.initiate()
b.运行 rs.add("mongodbr1:27017")
c.运行 rs.addArb("mongodbr2:27017") #仲裁集

至此,复制集配置完成

3.6 测试
3.6.1 测试数据复制
a.进入mongodbr0 ,运行 /usr/local/mongodb/bin/mongo --port 27017
b.默认是进入 test
c.插入新的数据 e.g. db.foo.insert({"name":"zhangshan","gender":"Male","age":"20","address":"suzhou"})
d.进入mongodbr1,运行 /usr/local/mongodb/bin/mongo --port 27017
e.由于r1 是secondary,所以不能直接访问数据,需要运行 rs.slaveOk() 或 db.getMongo().setSlaveOk()
f.执行 db.foo.find(); 刚才插入的数据会显示在这里
3.6.2 故障迁移测试
a.进入mongodbr0 ,运行 /usr/local/mongodb/bin/mongo --port 27017
b.执行 use admin 进入admin
c.执行 db.shutdownServer()
d.进入mongodbr1,运行 /usr/local/mongodb/bin/mongo --port 27017
e.这时候会发现这台已经变成primary 了 replset1:PRIMARY 

猜你喜欢

转载自www.cnblogs.com/maozhigao/p/8862699.html