• MongoDB主从复制(master-->slave)环境搭建


    导读:

    MongoDB一直都不推荐使用主从复制方式进行数据同步,而是推荐复制集(replicate set),相对于主从同步,复制集有更多优秀的功能,如自动故障转移等,但是,既然MongoDB到4.2版本还保留着该功能,我们不妨探索一下。


    基础信息
    IP地址操作系统版本数据库版本作用
    192.168.10.71 centos7.4 mongo 2.7.1 主节点(Master)
    192.168.10.72 centos7.4 mongo 2.7.1 从节点(Slave)


    (一)MongoDB安装

    MongoDB每个版本的安装方法都差不多,安装见:Linux下安装MongoDB 4.2数据库--使用tar包方式


    (二)MongoDB主从环境配置

    对于主从配置,相对于其它数据库而言,MongoDB的配置非常简单,只需要配置参数文件即可。

    主节点:192.168.10.71 从节点:192.168.10.72
    logpath=/mongo/log/mongod.log
    logappend=true
    
    # fork and run in background
    fork=true
    
    port=27017
    dbpath=/mongo/data
    
    # location of pidfile
    pidfilepath=/mongo/mongod.pid
    
    # Listen to local interface only. Comment out to listen on all interfaces.
    bind_ip=0.0.0.0
    master=true
    keyFile=/mongo/mongodb-keyfile
    auth=true
    logpath=/mongo/log/mongod.log
    logappend=true
    
    # fork and run in background
    fork=true
    
    port=27017
    dbpath=/mongo/data
    
    # location of pidfile
    pidfilepath=/mongo/mongod.pid
    
    # Listen to local interface only. Comment out to listen on all interfaces.
    bind_ip=0.0.0.0
    autoresync=true
    slave=true
    source=192.168.10.71:27017
    keyFile=/mongo/mongodb-keyfile
    auth=true

    特别注意:

    • 主节点需要配置:master=true参数;
    • 从节点需要配置:slave=true参数和source参数,source参数指定master数据库的IP及端口;
    • 如果启用了用户登录验证auth=true,那么还需要配置KeyFile参数,主从才能正常同步;
    • 从节点的autoresync=true是一个可选参数。主从同步的本质是主节点将重做日志(存放在local数据库下的oplog.$main集合中)传输到从节点,从节点再次根据日志执行一遍。但是oplog.$main是一个上限集合,如果主节点的日志还未拷贝到从节点就发生了日志覆盖,此时管理员必须手动重新搭建复制环境,假如使用了autoresync=true参数,当主从不同步时,从库将在10分钟内自动尝试重新同步一次。
    • oplogSize参数可以用来指定oplog.$main集合的最大空间尺寸,如果未指定mongod将在启动时分配5%的可用磁盘空间给oplog。


    (三)keyFile注意事项

    当启用用户身份认证时,主从节点需要配置keyfil文件以便于主从节点可以正常通信,keyfile的配置见上面的mongoDB配置文件,这里讲一下如何生产keyfile。

    在一台服务器上生成keyfile,并且将权限改为600

    openssl rand -base64 745 > /mongo/mongodb-keyfile 
    chmod 600 /mongo/mongodb-keyfile

    将这个文件拷贝到其它节点上即可,需要注意,各个节点的权限需要保持一致。


    遇到的问题:

    在创建完keyfile并在配置文件中加入参数后,启动MongoDB,发现无法启动:

    [root@mongo1 mongo]# mongod -f /mongo/mongodb.conf 
    warning: bind_ip of 0.0.0.0 is unnecessary; listens on all ips by default
    about to fork child process, waiting until server is ready for connections.
    forked process: 2173
    ERROR: child process failed, exited with error number 1

    查看MongoDB错误日志,报错如下:

    [root@mongo1 log]# tail -f mongod.log 
    2020-06-18T21:20:13.900+0800 invalid char in key file /mongo/mon-keyfile: =

    打开keyfile,发现在文件末尾有2个“=”,删除2个等号之后,MongoDB启动正常。需要留意,该操作改变了feyfile的内容,需要重新同步到其它节点。



    【完】

  • 相关阅读:
    请简述APP(移动运用)在升级安装时候应该考虑的场景?
    订单怎么测试
    支付功能测试
    购物车测试方法
    Python xlrd模块读取Excel表中的数据
    对h5页面的测试方式
    selenium IDE的使用
    单表王五涨工资操作
    siri功能测试
    逻辑题
  • 原文地址:https://www.cnblogs.com/lijiaman/p/13159093.html
Copyright © 2020-2023  润新知