该文档是搭建2成员,1仲裁节点

    1.创建副本目录
    mkdir /usr/local/mongodb/data1
    mkdir /usr/local/mongodb/data2
    mkdir /usr/local/mongodb/data3

    2.修改配置文件- 1/2/3都可以这样设置,修改下端口号即可
    #数据文件路径
    dbpath=/usr/local/mongodb/data1
    #日志文件路径
    logpath=/usr/local/mongodb/logs1/mongodb-err.log
    #pid文件路径
    pidfilepath=/usr/local/mongodb/logs1/master.pid
    #设置每个数据库保存在一个单独目录
    directoryperdb=true
    #以追加方式记录日志
    logappend=true
    #mongodb绑定地址
    bind_ip=127.0.0.1
    #端口号-默认27017
    port=27017
    oplogSize=100
    #以守护进程方式运行mongo即后台运行
    fork=true
    #禁用数据文件预分配(影响性能)
    noprealloc=true
    #使用较小的默认文件
    smallfiles=true
    #指定副本集
    replSet=rs0

    3.启动副本集
    mongod —config mongodb1.conf
    mongod —config mongodb2.conf
    mongod —config mongodb3.conf

    4.初始化副本集
    #因为文档是2个成员一个仲裁节点,所以只用初始化2个成员的即可
    rs.initiate( {
    _id : “rs0”,
    members: [
    { _id: 0, host: “127.0.0.1:27017” },
    { _id: 1, host: “127.0.0.1:27018” }
    ]
    })

    添加仲裁节点
    rs.addArb(“127.0.0.1:27019”)

    5.链接各个节点查看角色
    mongo 127.0.0.1:27017
    mongo 127.0.0.1:27018
    mongo 127.0.0.1:27019
    查看rs.status()

    6.测试数据复制—主节点上操作
    use db
    show tables
    db.cctv.insert({“name”:1})
    db.cctv.find()
    副节点查看
    use db
    show tables —报错,无法查看

    7.模拟主副切换
    ps -ef | grep mongo
    kill -9 主节点pid
    登陆副节点查看
    rs.status()
    已经切换过来,查看数据,已经同步过来
    use db
    show tables
    db.cctv.find()

    8.重新启动故障节点(删除1节点数据,模拟故障)
    mongod —config mongdb1.conf
    查看故障节点状态 已经成为备用了 SECONDARY
    rs.status()

    从库开启读操作
    rs.slaveOk();

    强制切换节点
    1. 27018目前为主节点,执行
    rs.freeze(120) #使其120秒内不会成为主节点
    rs.stepDown(120) #强制切换节点
    2.在27017上查看,已经成为主节点