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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM