## 主從帶認證:
html
主服務器和從服務器必須開啓安全認證:--auth, 主服務器和從服務器的admin數據庫中必須有全局用戶, 而後主服務器的local數據庫和從服務器的local數據均有名爲repl且密碼相同的用戶名。redis
注:local:本地數據庫 這個數據庫不會同步,主要存放同步的信息。在MongoDB2.0.2版本測試時,從服務器的admin數據庫中沒有全局用戶時也能進行復制(Deven:咱們就是採用這個方式,mongodb
從服務器admin數據庫沒有創建用戶),儘管admin中無用戶,客戶端鏈接此服務器不進行驗證(即--auth參數失效),但從服務器的--auth必須指定。既然啓用了--auth,就應該在從服務器的shell
admin中增長一個用戶。數據庫
### 準備工做安全
建立一個全局帳戶服務器
> use admin switched to db admin > db.addUser("root","zhuima") WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead Successfully added user: { "user" : "root", "roles" : [ "root" ] }
分別在master/slave的local數據庫下建立一個名爲repl的帳戶,並設置密碼相同ide
> use local switched to db local > db.addUser("repl","zhuima") WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead Successfully added user: { "user" : "repl", "roles" : [ "dbOwner" ] }
### 目錄步驟:測試
- 一、master搭建完畢ui
- 二、slave搭建完畢
- 三、master配置文件
- 四、slave配置文件
- 五、要點
- 六、不適合一致性要求實時的場景
### 具體步驟:
- 一、master搭建完畢
參考:http://lovelace.blog.51cto.com/1028430/1440988
- 二、slave搭建完畢
參考:http://lovelace.blog.51cto.com/1028430/1440988
- 三、master配置文件
[root@redis ~]# sed -e '/^$/d;/^#/d' /etc/mongodb.conf bind_ip = 192.168.58.30 port = 27017 fork = true pidfilepath = /var/run/mongodb/mongodb.pid logpath = /var/log/mongodb/mongodb.log dbpath =/mydata/data journal = true auth = true# 開啓認證模式 master = true # 指定該mongodb爲master模式
- 四、slave配置文件
[root@localhost ~]$ sed -e '/^$/d;/^#/d' /etc/mongodb.conf bind_ip = 192.168.58.10 port = 27017 fork = true pidfilepath = /var/run/mongodb/mongodb.pid logpath = /var/log/mongodb/mongodb.log dbpath = /mydata/data journal = true auth = true # 開啓認證模式 slave = true # 指定該mongodb爲slave模式 source = 192.168.58.30:27017 # 指定master服務器
- 五、要點
- 首先要在master的local數據庫中建立名爲repl的帳戶,並設置密碼
- 從服務器上和master同樣 建立名爲repl的帳戶,並設置和master上同樣的密碼
- 而後建立一個全局帳戶(管理帳戶,開啓同步便可)
- 六、前後重啓master\slave服務器,而後觀察日誌狀況(要有幾分鐘等待時間)
- 七、檢查同步狀況
> db.printReplicationInfo() this is a slave, printing slave replication info. source: 192.168.58.30:27017 syncedTo: Fri Jul 18 2014 10:22:31 GMT+0200 (CEST) = 22 secs ago (0.01hrs) # 這個是指延遲時長 >
- 八、手工同步
use admin; db.runCommand ( { "resync": 1 } )
參考文章:
***/demo_c161_i64169.html
### 後記
mongodb官方已經再也不推薦使用master/salve模式的結構
官方推薦使用replica_set複製集模式
僅供參考