天天看點

mongodb主從模式部署

mongodb部署采用主從模式,主節點為:peiwo-turn4,從節點為peiwo-proxy

1、建立部署使用者與部署路徑、日志、資料存放路徑

在peiwo-proxy主機上執行以下操作

groupadd mongodb

useradd -g mongodb -d /usr/local/mongodb mongodb

mkdir -p /data0/mongodb/logs  #日志檔案存放路徑

mkdir -p /data0/mongodb/data/master #資料檔案存放路徑

mkdir -p /data0/mongodb/pid #pid檔案存放路徑

mkdir -p /usr/local/mongodb/etc #配置檔案存放路徑

日志、資料存放路徑授權:chown -R mongodb.mongodb /data0/mongodb

在peiwo-turn4主機上執行以下操作

mkdir -p /data1/mongodb/logs  #日志檔案存放路徑

mkdir -p /data1/mongodb/data/master #資料檔案存放路徑

mkdir -p /data1/mongodb/pid #pid檔案存放路徑

日志、資料存放路徑授權:chown -R mongodb.mongodb /data1/mongodb

2、下載下傳軟體并解壓

curl -O http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.3.tgz && tar -zxvf mongodb-linux-x86_64-1.6.3.tgz -C /usr/local/mongodb

3、在/usr/local/mongodb/etc下新增配置檔案

peiwo-turn4主機配置檔案如下:master.conf

dbpath=/data1/mongodb/data/master

logpath=/data1/mongodb/logs/master.log

pidfilepath=/data1/mongodb/pid/master.pid

directoryperdb=true

logappend=true

port=21000

master = true

source=10.144.160.124:21000

oplogSize=100

fork=true

noprealloc=true

peiwo-proxy主機配置檔案如下:slave.conf

dbpath=/data0/mongodb/data/slave

logpath=/data0/mongodb/logs/slave.log

pidfilepath=/data0/mongodb/pid/slave`.pid

slave = true

source=10.144.145.235:21000

autoresync=true

4、啟動/停止/程序檢視

登陸mongodb伺服器,切換到mongodb使用者:su - mongodb

啟動程序:./start.sh

停止程序:想結束mongodb,可以killall mongod,或者./mongo在控制台中,use admin  ,然後db.shutdownServer()來結束mongodb伺服器。直接kill -9會使mongo非正常退出,可能會造成資料損壞問題。

檢視程序運作狀态:./ps.sh

檢視日志:./taillog.sh

登陸mongodb用戶端:./connect.sh

主從日常運維指令:

1、如果發現主從不同步,從上手動同步

db.runCommand({"resync":1}) 

2、狀态查詢

db.runCommand({"isMaster":1})  

3、在叢庫上查詢主庫位址

> use local; 

switched to db local 

> db.sources.find(); 

{ "_id" : ObjectId("5551769ddf22026a698a271d"), "host" : "10.144.145.235:21000", "source" : "main", "syncedTo" : Timestamp(1431510735, 1) }

4、檢視各Collection狀态

db.printCollectionStats(); 

5、檢視主從複制狀态

db.printReplicationInfo(); 

6、測試主從

在主伺服器建立資料庫

mongo --port 21000

>show dbs 

>use elaindb 

>db.blog.save({title:"new article"}) 

在從伺服器上檢視同步資料

在從庫插入資料的操作 會提示 not master

> use elaindb; 

switched to db elaindb 

> db.blog.find(); 

{ "_id" : ObjectId("4e9174b48443c8ef12b30c56"), "title" : "new article" } 

檢視主從同步資訊:

> db.printReplicationInfo(); 

this is a slave, printing slave replication info. 

source:   10.0.0.11:27001 

         syncedTo: Sun Oct 09 2011 18:37:12 GMT+0800 (CST) 

                 = 19 secs ago (0.01hrs) 

>db.printSlaveReplicationInfo(); 

此為同步過來的資料,測試成功

7、Slave 頂替 Master

如果主伺服器 10.144.145.235當機了,

此時需要用 10.144.160.124機器來頂替 master 服務,

步驟如下:

停止 10.144.160.124 程序(mongod)

kill -2 `ps -ef|grep mongod|grep -v grep|awk '{print $2}'` 

#删除 10.144.160.124 資料目錄中的 local.*

rm -rf /data1/mongodb/data/master//local.* 

#以--master 模式啟動 10.144.160.124

附錄二、切換Master/Slave 角色

切換主庫10.144.145.235和從庫10.144.160.124 的角色

步驟如下:(指令略)

用fsync 指令暫停 主庫 上的寫操作,

關閉 從庫 上的服務

清空 從庫 上的local.*檔案

用-master 選項重新開機 從庫 服務

在 從庫 上執行一次寫操作,初始化oplog,獲得一個同步起始點

關閉 從庫 服務,此時 從庫 已經有了新的local.*檔案

關閉 主庫 服務,并且用 從庫 上新的local.*檔案來代替 主庫 上的local.*檔案(建議先壓縮再COPY)

在啟動slave的選項上加一個-fastsync 選項來重新開機 主庫 服務

     本文轉自aaron428 51CTO部落格,原文連結:http://blog.51cto.com/aaronsa/1741516,如需轉載請自行聯系原作者