centos 7 配置mongodb副本集

 

  • 环境

    1. virtualbox下三台centos 7虚拟机,
    2. 网络地址分别为:192.168.56.101、192.168.56.102、192.168.56.103
    3. mongodb 版本4.02
    4. 101102PRIMARYSECONDARY节点,103做为仲裁节点
  • 安装与配置

  1. 安装virtualbox,设置virtualbox网络

     

  2. 创建一个网络,先“手动配置网卡”,设置Ipv4地址:192.168.56.1

      

 

   3.  安装三台centos 7虚拟机,分别设置三台虚拟机的网络为

   

 

4.  分别配置三台虚拟机的网卡:

ADDRES,IPADDR为192.168.56.101、192.168.56.102、192.168.56.103

    

 

5. 三台虚拟机 /etc/hosts 加入

        192.168.56.101 redis1 redis1
        192.168.56.102 redis2 redis2
        192.168.56.103    dis3 redis3

  •      安装配置mongodb

        

  1. 安装mongodb

          下载mongodb-linux-x86_64-amazon2-4.0.2.tar

    

  2.  解压

       tar -C /opt/ -xvf mongodb-linux-x86_64-amazon2-4.0.2.tar

3.  运行

  •    为每个虚拟机的副本集里的每个成员创建数据目录

          mkdir -p /data/db

  •   分别启动三台虚拟机的mongodb 

         注:运行前需要安装glibc-2.18与openssl

         cd /opt/mongodb-linux-x86_64-amazon2-4.0.2/bin

  4.  配置mongodb副本集

       ./mongod --replSet myapp --bind_ip 0.0.0.0
       在192.168.56.101上启动shell, 执行

      ./mongo

      启动shell,连接到192.168.56.101的mongodb,运行initiate命令

     

 

   通过rs.add()添加其他两个成员

 

  运行db.isMaster()查看副本集的摘要信息

  

要看到每个节点的状态信息,可以用rs.status()方法

 

5.  验证正确性

    

101虚拟机shell中执行

       >use test

   switched to db test

> db.products.insert({itemId:"12345","name":"Cooler","price":"100.0"})

 

在192.168.56.102中启动mongodb的shell

mongo

myapp:SECONDARY> 

 

因为SECONDARY是不允许读写的 ,所以要执行

myapp:SECONDARY> rs.slaveOk()

myapp:SECONDARY>use test

   switched to db test

myapp:SECONDARY> db.products.find()

{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }

验证自动故障转移,在192.168.56.101上杀掉主节点,ctrl-c或kill , 也可以连上主节点,在Shell里运行db.shutdownServer(),

启动192.168.56.102的shell(bin/ mongo)看到提示符已经变为

myapp:PRIMARY>

加入一条新的数据

myapp:PRIMARY> db.products.insert({itemId:"12346","name":"Apple","price":"200.0"}

  myapp:PRIMARY> db.products.find()

{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }

{ "_id" : ObjectId("5b9a347e07f6cbbb9244cb37"), "itemId" : "12346", "name" : "Apple", "price" : "200.0" }

启动192.168.56.101的mongdb

启动192.168.56.101的mongdb的shell,可以看到这101已经变成SECONDARY

myapp:SECONDARY>

 

shell里执行

myapp:SECONDARY> rs.slaveOk()

myapp:SECONDARY> use test

myapp:SECONDARY> db.products.find()

{ "_id" : ObjectId("5b9a317e6c50ff2af9abc057"), "itemId" : "12345", "name" : "Cooler", "price" : "100.0" }

{ "_id" : ObjectId("5b9a347e07f6cbbb9244cb37"), "itemId" : "12346", "name" : "Apple", "price" : "200.0" }

 

102上新加的数据已经可以在101上查到

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值