MongoDB 搭建副本集(Replica Set)(2)

在每台server上创建配置文件,将配置文件存放在目录C:\data\中。在同一个Replica Set中的所有成员必须有相同的Replica Set Name,这里设置为“rs0”。

--srv1 config_file_name:rs0_1.conf dbpath=C:\data\db\db_rs0 logpath=C:\data\db\db_rs0\rs0_1.log port=40001 replSet=rs0 --srv2   config_file_name:rs0_2.conf dbpath=C:\data\db\db_rs0 logpath=C:\data\db\db_rs0\rs0_2.log port=40002 replSet=rs0 --srv3  config_file_name:rs0_3.conf dbpath=C:\data\db\db_rs0 logpath=C:\data\db\db_rs0\rs0_3.log port=40003 replSet=rs0

配置参数含义:

replSet:设置Replica Set的name,在各个配置文件中,其值必须相同。

dbpath:MongoDB用于存储数据的目录,默认值是C:\data\db

logpath:用于记录mongod的日志数据

port:指定MongoDB监听的端口,默认值是27017

2,以配置文件方式启动mongod

一般情况下,mongod的参数值是不变的,将这些参数写入到配置文件中,能够简化MongoDB的管理。

mongod 命令有参数:--config 或 -f,用于引用配置文件。

--srv1 mongod -f C:\data\rs0_1.conf --srv2 mongod -f C:\data\rs0_2.conf --srv3 mongod -f C:\data\rs0_3.conf

3,启动mongo shell

在任意一台Server上打开三个mongo shell,使用参数 --host 指定Server Name,使用 --port 指定端口号。由于mongod没有使用默认的监听端口 27017,因此,必须使用 在mongo shell中使用 --port参数显式指定监听的Port。

--connect srv1 mongo --host srv1 --port 40001 --connect srv2 mongo --host srv2 --port 40002 --connect srv3 mongo --host srv3 --port 40003

五,配置Replica Set

在不同的Server上运行不同的MongoDB Instance,但是,每个mongod 都不知道其他mongod的存在,为了让每个mongod能够感知彼此的存在,需要配置Replica set,增加成员。

1,使用配置文档为Replica Set 增加成员

在srv1的mongo shell中,创建配置文档,调用rs.initiate()函数,按照配置文档来初始化Replica Set。

conf= { "_id" : "rs0", "members" : [ { "_id" : 0, "host" : "srv1:40001" }, { "_id" : 1, "host" : "srv2:40002" }, { "_id" : 2, "host" : "srv3:40003" } ] }

rs.initiate(conf)

在配置doc中,使用"_id" : "rs0" 指定Replica Set的name,members数组指定 Replica Set的成员的ID 和 host(“host:port”)。等到所有成员配置完成之后,Replica Set 会自动选举出一个Primary 节点,两个Secondary 节点。在Primary 节点上进行更新操作,就能同步到Secondary 节点了。

2,修改Replica Set

如果以rs.initiate()方式初始化Replica Set,那么MongoDB以默认配置文档初始化Replica Set,可以通过add()函数增加成员。

2.1 向Replica Set中增加一个成员

rs.add("host:port")

2.2 从Replica Set中删除一个成员

rs.remove("host")

2.3 查看Replica Set的配置

rs.conf()

2.4 重新配置Replica Set

var conf=rs.conf() conf.members[1].priority =5
--at primary member
rs.reconf(conf)

--at secondary member rs.reconf(conf,{force:true})

2.5 查看Replica Set的状态

rs.status()

六,维护Replica Set

1,查看Replica Set的配置信息

rs.conf()

配置文档主要分为三块:Replica Set 的ID和 Version,Members数组 和 Settings,下面是经过简化的配置信息。

{ "_id" : "rs0", "version" : 202997, "members" : [ { "_id" : 1, "host" : "srv1:40001", "arbiterOnly" : false, "hidden" : false, "priority" : 5, "votes" : 1 }, {...} ], "settings" : { ..... } }

Replica Set的ID字段唯一标识一个Replica Set,每一个Replica Set都有一个自增的版本号,由Version字段标识,标识Replica Set的不同版本。version字段的初始值是1,每次修改Replica Set的配置时,version字段都会自增。

Settings 字段的值是应用到Replica Set中所有成员的配置信息。

最关键的是members数组的字段,标识每个成员的配置信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/545223c4f1d26455b49b13291a48d8b7.html