MongoDB仲裁者(Arbiter)是复制集中的一个mongodb实例,它并不保存数据。
仲裁节点使用最小的资源并且不要求硬件设备,最好不要将Arbiter部署在同一个数据集节点中,可以部署在其他服务器中,也可部署在单独的虚拟机中。
当节点数目为奇数时,可以不需要仲裁节点。
当节点数目为偶数个时,需要部署一个仲裁节点,否则偶数个节点,当主节点挂了后,其他节点会变为只读。
副本集添加仲裁节点步骤(本例中MongoDB副本集是一主两从):
添加仲裁节点:
在仲裁节点编辑mongodb.conf
# vi /etc/mongodb.conf
logpath=/home/mongodb/logs/arbiter.log
logappend=false
port=27019
fork=true
dbpath=/home/mongodb/arbiter
#auth=true
replSet=test (应和副本集其他节点的集群名字保持一致)
启动arbiter上的mongodb实例:
#/data/mongodb-3.4.13/bin/mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 23331
child process started successfully, parent exiting
登陆到副本集上的主节点,进行如下操作:
test:PRIMARY> rs.addArb("192.168.0.3:27019");
{ "ok" : 1 }
查看状态:
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2018-02-27T08:24:28.866Z"),
"myState" : 1,
"term" : NumberLong(6),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1519719858, 1),
"t" : NumberLong(6)
},
"appliedOpTime" : {
"ts
仲裁节点使用最小的资源并且不要求硬件设备,最好不要将Arbiter部署在同一个数据集节点中,可以部署在其他服务器中,也可部署在单独的虚拟机中。
当节点数目为奇数时,可以不需要仲裁节点。
当节点数目为偶数个时,需要部署一个仲裁节点,否则偶数个节点,当主节点挂了后,其他节点会变为只读。
副本集添加仲裁节点步骤(本例中MongoDB副本集是一主两从):
添加仲裁节点:
在仲裁节点编辑mongodb.conf
# vi /etc/mongodb.conf
logpath=/home/mongodb/logs/arbiter.log
logappend=false
port=27019
fork=true
dbpath=/home/mongodb/arbiter
#auth=true
replSet=test (应和副本集其他节点的集群名字保持一致)
启动arbiter上的mongodb实例:
#/data/mongodb-3.4.13/bin/mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 23331
child process started successfully, parent exiting
登陆到副本集上的主节点,进行如下操作:
test:PRIMARY> rs.addArb("192.168.0.3:27019");
{ "ok" : 1 }
查看状态:
test:PRIMARY> rs.status()
{
"set" : "test",
"date" : ISODate("2018-02-27T08:24:28.866Z"),
"myState" : 1,
"term" : NumberLong(6),
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1519719858, 1),
"t" : NumberLong(6)
},
"appliedOpTime" : {
"ts