一、搭建MongoDB副本集
准备三台机器,分别是:
1.192.168.28.217
2.192.168.28.218
3.192.168.28.219
二、下载mongodb(https://www.mongodb.com/)放在218服务器目录 /data/bigdata/software/ 下
#进入mongodb目录
cd mongodb
#创建文件夹replset
mkdir replset
#进入replset目录
cd replset
#创建文件夹
mkdir data
三、利用ssh分别向217,219机器上拷贝mongodb
scp /data/bigdata/software/mongodb root@192.168.28.217:/data/bigdata/software/
scp /data/bigdata/software/mongodb root@192.168.28.219:/data/bigdata/software/
四、此时我们三台机器上分别存在了Mongodb
分别在这三台机器上启动mongodb
217:/data/bigdata/software/mongodb/bin/mongod --dbpath=/data/bigdata/software/mongodb/replset/data/ --replSet repset
218:/data/bigdata/software/mongodb/bin/mongod --dbpath=/data/bigdata/software/mongodb/replset/data/ --replSet repset
219:/data/bigdata/software/mongodb/bin/mongod --dbpath=/data/bigdata/software/mongodb/replset/data/ --replSet repset
五、启动以后我们发现副本集还没有初始化配置信息,接下来便是初始化副本集
在三台机器上任意一台登陆mongodb(我这里在218上登陆)
#进入mongodb目录
cd /data/bigdata/software/mongodb/ #进入mongodb bin/mongo
#使用admin数据库
use admin
#输入如下内容:
config=
{_id:"repset",members:[
...{_id:0,host:"192.168.28.217:27017"},
...{_id:1,host:"192.168.28.218:27017"},
...{_id:2,host:"192.168.28.219:27017"}]
}
注:repset要和上面参数 --replSet repset保持一致.
注:repset要和上面参数 --replSet repset保持一致.
#执行后输出内容如下:
#初始化副本集配置
rs.initiate(config);
#输出成功{"ok",1}
#查看日志,副本集启动成功后,218为主节点PRIMARY,217、219为副本节点SECONDARY。
#查看集群节点的状态
rs.status()
六、至此整个副本集就搭建成功了,接下来测试副本集数据复制功能
回到218主节点连接进入终端
#建立test数据库
use test
#往testdb插入数据
db.testdb.insert({"test1":"testval1"})
#在副节点217,219上查看数据是否复制过来
#使用test 数据库。
repset:SECONDARY> use test;
repset:SECONDARY> show tables;
#可以看见错误信息:not master and slaveOk
#mongodb默认是从主节点读写数据的,副本节点上不允许读,需要设置副本节点可以读。
repset:SECONDARY> db.getMongo().setSlaveOk();
#可以看到数据已经复制到了副本集。
repset:SECONDARY> db.testdb.find();