zoukankan      html  css  js  c++  java
  • MongoDB主从复制

             在生产环境中单台数据库已不能满足业务需求,数据库主从复制在架构中使用很常见,用于备份、高可用、读写分离来提高数据处理性能和冗余,常用架构模式是一主一从、一主多从、双主。但MongoDB中还不能做到双向同步,因此无法实现双主。那我们这次架构采用的是一主一从,在生产环境中主主要承担写操作,从承担读操作。

    环境说明:

    OS:CentOS6.5_x64

    主(Master):192.168.0.201

    从(Slave):192.168.0.202

    主从数据库目录都在 /usr/local/mongodb/data

    日志目录 /usr/local/mongodb/logs

    1、主mongodb配置

    [root@localhost ~]# mkdir /usr/local/mongodb/data
    [root@localhost ~]# mkdir /usr/local/mongodb/logs
    [root@localhost ~]# mkdir /usr/local/mongodb/conf
    
    
    [root@localhost ~]# vi /usr/local/mongodb/conf/mongod.conf
    port=27017       #端口号
    fork=true        #以守护进程方式运行
    logpath=/usr/local/mongodb/logs/mongodb.log  #日志文件
    logappend=true   #日志输出方式
    dbpath=/usr/local/mongodb/data  #数据库位置
    maxConns=1024    #数据库最大连接数
    master=true      #主模式
    oplogSize=2048   #日志滚动,单位M

    2、从Mongodb配置

    [root@localhost ~]# mkdir /usr/local/mongodb/data
    [root@localhost ~]# mkdir /usr/local/mongodb/logs
    [root@localhost ~]# mkdir /usr/local/mongodb/conf
    
    [root@localhost ~]# vi /usr/local/mongodb/conf/mongod.conf
    port=27017
    fork=true
    logpath=/usr/local/mongodb/logs/mongodb.log
    logappend=true
    dbpath=/usr/local/mongodb/data
    maxConns=1024
    slave=true                  #从模式
    source=192.168.0.201:27017  #指定主Mongodb
    autoresync=true             #自动同步

    3、添加环境变量并启动Mongodb

    [root@localhost ~]# echo "PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile
    [root@localhost ~]# source /etc/profile
    [root@localhost ~]# mongod -f /usr/local/mongodb/conf/mongod.conf #启动
    [root@localhost ~]# netstat -tupln | grep mongod
    tcp     0  0 0.0.0.0:28017  0.0.0.0:*     LISTEN     1923/mongod 
    tcp     0  0 0.0.0.0:27017  0.0.0.0:*     LISTEN     1923/mongod
    
    
    #主上日志信息看出主数据库允许让192.168.0.202从数据库45458端口连接



    #从上日志信息看出开始同步192.168.0.201主数据库
     

    4、测试Mongodb主从复制

    #创建一个数据库test,集合名也是test,插入一个字段AGE:18。然后再从数据库showdbs;查看已经同步过去。语法与Mysql有很大区别。

    [root@localhost ~]# mongo
    MongoDB shell version:2.4.9-rc0
    > use test
    > db.test.save({AGE:18})
    > db.test.find()
    { "_id" :ObjectId("52addd66124c02eb8b2d1a5a"), "AGE" : 18 }
    > show dbs
    local   2.0771484375GB
    test    0.203125GB
    >
    
    
    主日志

       从日志

      

      创建数据库后,由上主从日志看出,主允许从连接,从同步主数据(applied 1 operations)。主数据库操作记录为OpLog日志,说明主从数据库原理是定期从主服务器中获取oplog记录,然后在本机上执行。

    5、查看主从复制状态

    #查看主

    [root@localhost ~]# mongo
    MongoDB shell version:2.4.9-rc0
    connecting to: test
    >db.printReplicationInfo()
    configured oplog size:   2048MB
    log length start to end:1494secs (0.42hrs)
    oplog first event time:  Sun Dec 15 2013 10:55:37 GMT-0500 (EST)
    oplog last event time:   Sun Dec 15 2013 11:20:31 GMT-0500 (EST)
    now:                     Sun Dec 15 2013 11:20:33GMT-0500 (EST)
    >

    查看从服务器
    [root@localhost ~]# mongo
    MongoDB shell version: 2.4.9-rc0
    connecting to: test
    >db.printReplicationInfo()
    this is a slave, printingslave replication info.
    source:   192.168.0.201:27017
             syncedTo: Sun Dec 15 2013 11:18:31GMT-0500 (EST)
                     = 21 secs ago (0.01hrs)
    >

    #关闭Mongodb数据库

    [root@localhost ~]# mongod -f/usr/local/mongodb/conf/mongod.conf --shutdown

    #写一个简单的SysV管理脚本

    [root@localhost ~]# vim /etc/init.d/mongod
    #!/bin/bash
    #chkconfig: 35 80 20
    #description: Mongodb service control script
    PROG="/usr/local/mongodb/bin/mongod"
    CONF="/usr/local/mongodb/conf/mongod.conf"
    case $1 in
            start)
            $PROG -f $CONF &> /dev/null
            echo "Starting mongodb:                 [ OK ]"
            ;;
            stop)
            $PROG -f $CONF --shutdown &> /dev/null
            echo "Shutting down mongodb:                    [ OK ]"
            ;;
            restart)
            $0 stop
            $0 start
            ;;
            *)
            echo "Usage: $0 {start|stop|restart}"
    esac
     
    [root@localhost ~]# chmod +x /etc/init.d/mongod
    [root@localhost ~]# chkconfig --add mongod
    [root@localhost ~]# chkconfig mongod on

     

     
     
  • 相关阅读:
    c# 反射应用之工厂
    UnityContainer 实现DI
    TinyMCE 的音乐插件/mp3 music insert plugin
    Django on IronPython and Windows
    说说分页
    Katze 简单的.net "ORM"框架
    Discuz!NT在64位Windows下运行的问题
    恐怖的迅雷
    基于Gettext的asp.net网站多语言解决方案
    微软是如何输掉API之战(下)
  • 原文地址:https://www.cnblogs.com/lfl17718347843/p/11908662.html
Copyright © 2011-2022 走看看