mongo副本集

1 概念
副本集是一组服务器,一个主服务器(primary)处理客户端请求,多个备份服务器(secondary)保存主服务的副本;他们的数据在理想情况下是一样的

2 优势(高可用性)
primary奔溃了,会自动将一个secondry升级成primary

3 奇数性
只有奇数才能存在大多数的情况,类似都是奇数的常委

4 部署副本集
4.1 启动奇数个(3个)mongd,并且指定副本集的名称 myReplicaSet

4.2 启动mongd
mongod --replSet myReplicaSet -f mongod.conf

或者在配置文件中添加配置

replication:
  replSetName: myReplicaSet

4.3 多个mongod关联起来了,否则他们不知道相互的存在

# mongo --port 27017

rs.initiate(
  {
    _id: "myReplicaSet",
    members: [
      { _id : 0, host : "hdp06.thinkjoy.tt:27017" },
      { _id : 1, host : "hdp07.thinkjoy.tt:27017" },
      { _id : 2, host : "hdp08.thinkjoy.tt:27017" }
    ]
  }
)

(1)这个配置会mongo同步配置到其他两台上
(2)它们之间会自己选出一个主节点,其他成为备份服务器
(3)myReplicaSet名称必须匹配上
(4)rs是一个副本集操作的辅助函数,rs,initiate()等价于db.adminCommand({'replSetInitiate':{....}})

5 修改副本集配置

增加节点
rs.add("hdp06.thinkjoy.tt:27017")

删除节点

查看配置

6 成员优先级

一个成员想成为主节点的渴望程度,取值范围0-100,默认值是1,0不可能成为主节点,越大越愿意成为主节点;当然具体协商由mongo自动完成,只是说同等情况下,优先级高的更容易成为primary
rs.add({{ _id : 2, host : "hdp08.thinkjoy.tt:27017" , priority:1.5}})

7 数据同步原理
primary会自己维护一个oplog集合日志(数据的读写日志),由secondary同步primary的oplog

8 客户端连接副本集正确姿势
可以把所有的副本集地址作为种子列表 ip1:port1,ip2:port2,......,会自动的连上primary

你可能感兴趣的:(mongo副本集)