第37章:MongoDB-集群--Replica Sets(副本集)---单机的搭建

时间:2022-11-11 20:34:32
①创建副本集

1:先创建几个存放数据的文件夹,比如在前面的dbs下面创建db1,db2,db3;

同理在前面的logs下面创建logs1,logs2,logs3

2:在启动MongoDB服务器的时候,使用--replSet副本集名称选项,如:

./mongod --dbpath ../dbs/db1 --logpath ../logs/logs1 --port 20001 --fork --replSet myrepl

3:然后再启动两个,端口分别为20002和20003,当然要修改相应的数据文件路径和日志路径,副本集名称

./mongod --dbpath ../dbs/db2 --logpath ../logs/logs2 --port 20002 --fork --replSet myrepl

./mongod --dbpath ../dbs/db3 --logpath ../logs/logs3 --port 20003 --fork --replSet myrepl

4:连接到20001,[第一次]进行副本集的初始化

rs.initiate(

{_id:"myrepl",

members:[

{_id:0,host:'127.0.0.1:20001'},

{_id:1,host:'127.0.0.1:20002'},

{_id:2,host:'127.0.0.1:20003'}

]

}

)

5:察看副本集状态

rs.status(); 或者rs.config(); 或者db.printReplicationInfo();

②说明

(1)客户端的读写请求,都是发送到主节点进行操作

(2)客户端不能在备份节点上进行写请求

(3)默认情况下,客户端不能从备份节点读取数据,可以通过显示的执行如下语句来允许读:db.getMongo().setSlaveOk();

③测试
启三台shell工具,分别连接 ./mongo 127.0.0.1:20001   ./mongo 127.0.0.1:20002   ./mongo 127.0.0.1:20003
1、数据查询测试
在主节点创建一个新的数据库并插入数据,再查询从节点
2、故障转移测试
将当前主节点kill掉
3、再启动之前的主节点
它会从同步主节点数据

4、如果由于之前的操作,导致某台起不起来

删除当前的/dbs/dbN  /logs/logsN的数据