zoukankan      html  css  js  c++  java
  • Mongodb集群——master/slave

    集群的配置

    (本测试放于同一台机器进行配置,所以IP地址一样,如果是在不同的服务器上更换IP便可以)
     
    1、目录结构
         
    拷贝两份mongodb到/home/scotte.ye/mongo1和/home/scotte.ye/mongo2
     
    2、开启mongodb
     
    主:
    #cd /home/scotte.ye/mongo1/bin
    #./mongod --master -port=10111 -dbpath=/home/data/10111 -nohttpinterface &
    #
    这样主服务器就开启了,几个关键参数的说明(当然也可以自己查看帮助,./mongod --help):
    --master:标识当前开启的mongodb是作为主服务器的
    -port:当前服务器的监听服务端口。默认27017
    -dbpath:批当前程序运行的日志保存路径。默认/data/db。注这个路径mongodb不人自己创建,所以一定要自己手工来创建,否则程序不能正常启动。
    -nohttpinterface:不开启网页接口,也就是不能通过网页的形式查看服务器运行状态。默认是会在28017端口开启一个网页服务提供用户查看服务器状态。因为当前都在同一个机器上,所以如果开启这个两个会产生冲突,所以不能开启。
     
    从:
    #cd /home/scotte.ye/mongo1/bin
    #./mongod --slave --source=192.168.35.106:10111 -port=10112 -dbpath=/home/data/10112 -nohttpinterface &
    #
    这是开启一个从服务器,多个从也是按相同的方式来开启。几个关键的参数说明:
    --slave:指明当前开启的为从服务器。
    --source:标明当前从服务器要连接的主服务器的端口和IP
    其它参数同主,所以不再赘述。
     
    集群特点
     
    1、只有主服务器允许写入,其它从服务器只能读取。
    2、从服务器启动的时候马上就会和主服务器进行数据同步,所以不要担心后起的从服务器不会和主服务器同步之前的数据,也不要我们自己手动操作。
     
    集群的主从切换
     
    1、主机宕机,slave顶替
    • 停止slave的mongod进程
    • 删除slave目录下的local.*文件
    • 以--master的模式启动B
    2、切换Master/Slave(原来的master是正常运行的)
    • 用fsync命令暂停master的写操作 //确保切换的时候主从数据同步
    • 关闭slave服务
    • 清空slave目录下的local.*文件
    • 用--master重启slave为master
    • 在原来的slave也就是现在的master上面执行一次写操作,生成oplog,获取第一个同步点,因为slave与master的数据同步是通过oplog来实现的。所以这一步很重要,一定要完成。
    • 关闭现master服务,同时slave也会生成新的local.*文件
    • 关闭原master,用现master上面的local.*文件替换原master上面的local.*.因为文件比较大,所以最好是压缩拷贝
    • 再用--master选项重启新master服务
    • 再用--slave的模式重启原master服务,注意还要加一个-fastsync选项。这个和用fsync来暂停master有关
         如果原来的master不是正常的,那么这个时候可以跳过第一步,拷贝新master的文件到原master重启服务就可以了。
     
    3、更新主服务器位置
     
         假设原来从主机的启动方式如下:
         $ mongod --slave --source 192.168.35.106:10111
         此时如果想更换主服务器的地址,可以通过下面的方式:
    • 重启mongod服务,不要加-slave 和 -source选项:$ mongod
    • 启动shell执行如下操作:
      • > use local
      • switched to db local
      • >db.sources.update({host:"192.168.356.106:10111"},{$set:{host:"192.168.35.106:10112"}})
    • 接着再重启服务器:
      • $ ./mongod --slave --source=192.168.35.106:10112
      • $ # or
      • $ ./mongod --slave
  • 相关阅读:
    mysql数据创建带参的存储过程,并在存储过程中调用另一个存储过程
    python解析.xls/.xlsx文件--openpyxl模块(第三方)
    python使用django开发接口
    Mysql创建存储过程--批量插入数据
    Centos7下安装kafka,并使用python操作kafka的简单使用
    Centos7下安装JDK1.8
    Centos7下docker的安装
    python解析.xml文件-- xmltodict模块(第三方)
    解决:git SSL certificate problem: unable to get local issuer certificate
    AD域是什么意思?
  • 原文地址:https://www.cnblogs.com/chaoa/p/3914128.html
Copyright © 2011-2022 走看看