您的位置:首页 > 数据库 > Mongodb

mongodb副本集实践

2016-09-21 21:56 218 查看
**MongoDB副本集(replica set):**


MongoDB不推荐使用主从复制模式,最为显著的区别在于,副本集没有固定的主数据库,它是整个集群中选举出一个当主节点,当其不工作的时候变更其他节点,因此具有自动故障恢复功能。主从复制模式没有类似于只有一个副本的情况,区别是主从模式不能够在主服务器宕机的时候进行自动切换,而副本集可以进行自动切换,保证数据的完整性。

副本集结构图:





创建数据文件存储路径:

mkdir -p /mongodb/data/A

mkdir -p /mongodb/data/B

mkdir -p /mongodb/data/C

创建日志文件路径:

mkdir -p /mongodb/log

创建配置文件:

3.1 >vim /etc/A.conf

dbpath = /mongodb/data/A

logpath=/mongodb/log/dblogA

port = 1111 #端口

bind_ip = 127.0.0.1 #服务地址

replSet = rp01/127.0.0.1:2222 #设定同伴 rp01为集群名称

fork=true #后台运行

3.2 >vim /etc/B.conf

dbpath = /mongodb/data/B

logpath=/mongodb/log/dblogB

port = 2222

bind_ip = 127.0.0.1

replSet = rp01/127.0.0.1:3333

fork=true #后台运行

3.3 >vim /etc/C.conf

dbpath = /mongodb/data/C

logpath=/mongodb/log/dblogC

port = 3333

bind_ip = 127.0.0.1

replSet = rp01/127.0.0.1:1111

fork=true #后台运行

启动三台服务器:

mongod –config /etc/A.conf

mongod –config /etc/B.conf

mongod –config /etc/C.conf

shell下链接三台副本集合:

mongo 127.0.0.1:1111

mongo 127.0.0.1:2222

mongo 127.0.0.1:3333

在其中任何一个副本及中配置初始化:

config = {_id: ‘rp01’, members: [{ #rp01为本副本集名

“_id”:1,

“host”:”127.0.0.1:1111”

},{

“_id”:2,

“host”:”127.0.0.1:2222”

},{

“_id”:3,

“host”:”127.0.0.1:3333”

}]

}

rs.initiate(config);

节点和初始化高级参数:

standard 常规节点:参与投票有可能成为活跃节点


passive 副本节点:参与投票,但是不能成为活跃节点

arbiter 仲裁节点:只是参与投票不复制节点也不能成为活跃节点

高级参数

Priority 0到1000之间 ,0代表是副本节点 ,1到1000是常规节点

arbiterOnly : true 仲裁节点

用法

members”:[{

“_id”:1,

“host”:”127.0.0.1:1111“,

arbiterOnly : true

}]”

三个客户端前缀变化:

rp01:PRIMARY>

rp01:SECONDARY>

rp01:SECONDARY>

可以在主副本集中查看副本集合的状态(本例只用了两个副本集1111,2222):rs.status()



搭建完毕,来进行验证

主从服务器数据是否同步,从服务器没有读写权限

a:向主服务器写入数据 ok 后台自动同步到从服务器,从服务器有数据

b:向从服务器写入数据 false 从服务器不能写

c:主服务器读取数据 ok

d:从服务器读取数据 false 从服务器不能读

主服务器操作插入数据:



从服务器默认没有查看数据库信息操作:



需要在从服务器中进行设定:rp01:SECONDARY> db.getMongo().setSlaveOk();或者rs.slaveOk();之后才能查看数据库信息:



关闭主服务器,从服务器是否能顶替

此时你关掉活跃节点的服务。此时你会发现剩余的两台机器有一台变为活跃节点了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息