mongodb 主從複製

來源:互聯網
上載者:User
文章目錄
  •   1.設定主節點(ip:10.0.0.1)
  •  
  •   2.設定從節點(ip:10.0.0.2)
  •  
  •   3.通過向sources集合添加主節點資訊(ip:10.0.0.3)
  •  
  •   4.修改從節點的配置,改為10.0.0.4:27037為源,則可以用insert和remove來完成
1.主從複製

   主從複製是MongoDB最常用的複製方式。可用於備份、故障恢複、讀擴充等。

   最基本的設定方式就是建立一個主節點和一個或者多個從節點,每個從節點要知道主節點的地址 。

2.選項

   --only:在從節點上指定只複製特定某個資料庫(預設複製所有資料庫)。

   --slavedelay:用在從節點,當應用主節點的操作時增加延時(單位為秒)。

   --fastsync:以從節點的資料快照為基礎啟動從節點。(簡單來說以前是主節點的備份,現在從新啟動,就會在原來資料的基礎上啟動,不會重新同步一次主節點的所有資料)。

   --autoresync:如果從節點與主節點不同步了,則自動重新同步。

   --oplogSize:主節點oplog的大小(單位是MB)。

      註:主節點的操作記錄稱為oplog。oplog儲存在一個特殊的資料庫中,叫做local。oplog只記錄改變資料庫狀態的操作,如查詢操作就不會儲存。

 

3.命令  1.設定主節點(ip:10.0.0.1)Sql代碼  
  1. hww@ubuntu:~$ mkdir -p ~/dbs/master  
  2. hww@ubuntu:~$ mongod -dbpath ~/dbs/master -prot 27037 -master  
   2.設定從節點(ip:10.0.0.2)Java代碼  
  1. hww@ubuntu:~$ mkdir -p ~/dbs/slave  
  2. hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave -source 10.0.0.1:27037  
   3.通過向sources集合添加主節點資訊(ip:10.0.0.3)Java代碼  
  1. hww@ubuntu:~$ mkdir -p ~/dbs/slave  
  2. hww@ubuntu:~$ mongod -dbpath ~/dbs/slave -port 27037 -slave   

    向sources集合添加主節點資訊:

 

Java代碼  
  1. > use local  
  2. switched to db local  
  3. > db.sources.insert({"host":"10.0.0.1:27037"})  

    查詢文檔是否插入成功:

 

Java代碼  
  1. > db.sources.find()  
  2. {    
  3.         "_id" : ObjectId("4edd829376484aaedee08dae"),   
  4.         "host" : "10.0.0.1:27037", "source" : "main"   
  5. }  
   4.修改從節點的配置,改為10.0.0.4:27037為源,則可以用insert和remove來完成Java代碼  
  1. > db.sources.insert({"host":"10.0.0.4:27037"})  
  2. > db.sources.remove({"host":"10.0.0.1:27037"})   

 

mongodb文檔 資料庫提供了主從複製模式,其實mongodb的主從複製配置很簡單,就是啟動mongod服務進程的時候 分別指定 --master ,--slave,一個是以主模式啟動,另一個屬於從模式啟動,當主庫更新時,資料就會被被複製到從資料庫中。此次測試僅在單台 伺服器上開啟2deamon來類比2台伺服器進行主從複製:主庫:./mongod --master --dbpath=/opt/monogdata/data --port=60000從庫:./mongod --slave --dbpath=/opt/monogdata/slavedata/ --port=60010 --source=127.0.0.1:60000  --主庫:[monogdb@yangDB bin]$ ./mongo --port 60000MongoDB shell version: 1.8.3-rc0connecting to: 127.0.0.1:60000/test> show dbsadmin   (empty)local   1.203125GBtest    0.203125GB> use testswitched to db test> show collections -- 查看主庫中的對象。system.indexes   --system.indexes用來存放索引的表test --一個測試表 --查看test表中的內容> db.test.find(); --此操作=select * from test;{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" } --向test表中插入資料> db.test.insert({id:2,val:"yangql is learing monogdb master slave!"});> db.test.find();                                                      { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }                   --備庫[monogdb@yangDB bin]$ ./mongo --port=60010MongoDB shell version: 1.8.3-rc0connecting to: 127.0.0.1:60010/test> dbtest> db.printSlaveReplicationInfo(); ---顯示主庫的資訊。source:   127.0.0.1:60000         syncedTo: Fri Aug 12 2011 21:19:42 GMT+0800 (CST)                 = 7secs ago (0hrs)> show collectionssystem.indexes test  --主庫的資料已經被複製到從庫了> db.test.find();{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }--主庫更新資料後查看從庫。> db.test.find();{ "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" } --測試在從庫更新資料,但是不成功!> db.test.insert({id:2,val:"yangql is writing things to  slave,but it can`t do this!"});                                     not master> db.test.find();  { "_id" : ObjectId("4e3fe5d8e138232e61000000"), "id" : 1, "val" : "hello monogdb" }{ "_id" : ObjectId("4e45291c018d1a0d765a9788"), "id" : 2, "val" : "yangql is learing monogdb master slave!" }monogdb的主從複製是不能達到主庫當機以後,從庫自動升級到主庫的,而Replica Pairs借用arbiter可以完成主從故障遷移 。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.