复制集要点

来源:互联网 发布:南京网络教育本科 编辑:程序博客网 时间:2024/05/17 01:55

1.配置副本集

首先在不同的机器上启动mongod,并编写相应的配置文件mongod.conf

dbpath=localhost/home/mongodb/shard1/data
logpath=localhost/home/mongodb/shard1/log/shard1.log
journal=true
port=22001
replSet=shard1
fork=true

这里副本集名称为shard1 端口号为22001 指明具体的数据及日志存放位置,并启动

server-1>mongod -f mongod.conf

相应的配置好其他的两个示例

dbpath=localhost/home/mongodb/shard1/data
logpath=localhost/home/mongodb/shard1/log/shard1.log
journal=true
port=22002
replSet=shard1
fork=true

server-2>mongod -f mongod.conf

server-3>dbpath=localhost/home/mongodb/shard1/data
logpath=localhost/home/mongodb/shard1/log/shard1.log
journal=true
port=22003
replSet=shard1
fork=true

server-3>mongod -f mongod.conf

这时基本操作已做完,下一步配置相应数据,让mongod知道有其他节点存在并属于同一个副本集

随便连接某一个节点:

mongo localhost:22001
mongo>config={
“_id”:”shard1” //副本集的名字
“members”:[
{“_id”:0,”host”:”server-1:22001”}.
{“_id”:1,”host”:”server-2:22002”}.
{“_id”:2,”host”:”server-3:22003”,”arbiterOnly”:true}
]
}
mongo>rs.initiate(config) //初始化副本集

通过重新编写config 然后通过

mongo>rs.reconfig(config)

然后合法更改配置

2.设计副本集

这里必须满足大多数要求 才能选举主节点
注意:当主节点发现已经得不到大多数的支持(集群中一半以上的节点挂掉或者不可达),则主节点会自动降级成备份节点,导致副本集不能使用
怎样才算大多数:

副本集中的成员总数 副本集中的大多数 1 1 2 2 3 2 4 3 5 3 6 4 7 4

下面推荐两种配置:
(1)将“大多数”成员放置在同一个数据中心
(2)在两个数据中心葛方智数量相等的成员,在第三个地方放置一个用于决定胜负的副本集成员

3.选举机制

遵守大多数规则:
当属于大多数成员中的某个成员投否决票 就相当于-10000张赞成票

希望成为主节点的成员必须复制将自己的数据更新为最新 复制操作是严格按照时间排序的 成员只能“自荐”,不能“推荐”,简单起见。

4.成员配置选项

仲裁者 指的是没有数据读写服务的实例节点 整个复制集只能使用一个仲裁者
可以运行在服务器配置比较差的地方。 可以没有,但只能有一个
如果可能 尽可能在副本集中使用技术哥数据成员,而不要使用仲裁者。

5.优先级

指的是数据成员渴望成为主节点的程度,0~100之间,默认为1
将优先级设为0 :优先级为0的成员永远不能够成为主节点 被称为被动节点

mongo>rs.add({“_id”:4,”host”:”server-4:27017”,”priority”:1.5})

注意:修改副本集配置时,新的配置必须发送给在新配置下可能成为主节点的成员。
因此无法再一次reconfig操作中将当前主节点的优先级设置为0,也不能对所有成员优先级为0的副本集执行reconfig。

6.隐藏成员

只有由优先级为0的数据成员可以被隐藏(不能将主节点隐藏)

mongo>rs.add({“_id”:5,”host”:”server-5:27017”,”priority”:0,”hidden”:true})

也可以通过reconfig设置

7.延迟备份节点

使用slaveDelay选项 要求用户成员优先级为0 并设置隐藏hidden 避免将读请求路由到延迟备份节点 单位s

8.创建索引

指定buildIndex选项为false 要求用户成员优先级为0 针对用途仅仅是处理数据备份或者是离线的批量任务
注意:此操作不可恢复

0 0