mongodb副本集实践

来源:互联网 发布:教学录像软件 编辑:程序博客网 时间:2024/05/17 06:03
                **MongoDB副本集(replica set):**

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

副本集结构图:
副本及基本机构图
副本集故障自动变更主数据库

  1. 创建数据文件存储路径:
    mkdir -p /mongodb/data/A
    mkdir -p /mongodb/data/B
    mkdir -p /mongodb/data/C
  2. 创建日志文件路径:
    mkdir -p /mongodb/log
  3. 创建配置文件:
    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 #后台运行

  4. 启动三台服务器:
    mongod –config /etc/A.conf
    mongod –config /etc/B.conf
    mongod –config /etc/C.conf

  5. shell下链接三台副本集合:
    mongo 127.0.0.1:1111
    mongo 127.0.0.1:2222
    mongo 127.0.0.1:3333
  6. 在其中任何一个副本及中配置初始化:
    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
}]”

  1. 三个客户端前缀变化:
    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();之后才能查看数据库信息:
这里写图片描述

关闭主服务器,从服务器是否能顶替
此时你关掉活跃节点的服务。此时你会发现剩余的两台机器有一台变为活跃节点了。

0 0
原创粉丝点击