亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

實戰MongoDB-Replication之Replica Set

發布時間:2020-06-02 07:55:15 來源:網絡 閱讀:40246 作者:virusswb 欄目:MongoDB數據庫

實戰MongoDB

Master-Slave

 

MongoDB支持不同服務之間的異步的數據復制,來實現failover(故障轉移,故障切換,故障恢復) and redundancy(數據冗余)。

同一時間,只有一個服務節點(primary或者master)支持寫入。

MongoDB支持兩種復制的模式:

  1. Master/Slave,主從復制,角色包括master和slave。
  2. Replica Set,復制集復制,角色包括primary和secondary。

 

介紹Master/Slave的官方地址:

http://www.mongodb.org/display/DOCS/Master+Slave

介紹Replica Set的官方地址:

http://www.mongodb.org/display/DOCS/Replica+Sets

 

今天實戰的是replica set,也就是復制集復制。

  • replica set可以實現自動的failover和自動的recovery。
  • replica set由兩個或者更多的節點組成,實現彼此的復制。
  • replica set自動選擇primary節點,沒有一個節點是固定的primary。
  • mongos會自動發現一個replica set的primary節點發生變化,并將寫操作發送給這個新的primary節點。

通常用于下面幾個場景

  • 數據冗余。
  • 自動failover,提供高可用性的服務。
  • 分散讀的負載。
  • 簡化維護(相對于master-slave來說)。
  • 災難恢復。

首先還是啟動mongod,用于replica set的參數有兩個:

--replSet <setname>,復制集的名稱。

--oplogSize <MB>,操作日志的大小,單位為MB。

這回我們在ubuntu下面配置replica set,先啟動兩個mongod節點。

 

  1. mongod --dbpath /home/andyshi/mongo1/ --logpath /home/andyshi/mongo1/log.log --replSet shard1 --port 10001 --bind_ip 192.168.0.21 

 

  1. mongod --dbpath /home/andyshi/mongo2/ --logpath /home/andyshi/mongo2/log.log --replSet shard1 --port 10002 --bind_ip 192.168.0.21 

你會注意到,上面兩個mongod的啟動參數replSet指定了相同的值shard1,也就是兩個個mongod節點處于同一個replica set中。

Replica Set的初始化

光啟動了兩個個mongod節點,還不能提供任何的服務,這時候你使用mongo連接之后,進行db.book.insert會提示你no master,也就是說沒有primary節點,所以他不知道往哪一個節點寫入數據。

在啟動了兩個個mongod節點之后,需要進行初始化。

首先用mongo連接到任意一個mongod節點,然后執行下面的命令。

  1. cfg={_id:'shard1',members:[ 
  2. {_id:0,host:'192.168.0.21:10001'}, 
  3. {_id:1,host:'192.168.0.21:10002'}] 
  4. rs.initiate(cfg) 

出現下面的提示信息就代表成功了,如果沒有成功,可以google一下錯誤提示,會找到很多的答案的。

 

  1.    "info" : "Config now saved locally.  Should come online in about a minute.", 
  2.    "ok" : 1 

繼續執行

 

  1. rs.status() 

可以查看replica set的狀態,包括名稱,時間,當前登錄的mongod是primary還是secondary,以及成員的信息等。

在replica set的信息中,其中重要的是:

  • myState的值,如果是1代表當前登錄的是primary;如果是2代表當前登錄的是secondary。

成員信息中包括地址,健康狀態,是primary還是secondary等。

成員信息中比較重要的是

  • state:1表示該host是當前可以進行讀寫,2:不能讀寫
  • health:1表示該host目前是正常的,0:異常

這時候登錄primary的mongod,插入一條數據。

 

  1. //假設10001是primary,可以通過查詢rs.status來獲取 
  2. mongo 192.168.0.21:10001 
  3.  
  4. use test 
  5. db.book.insert({'title':'computer'}) 

然后查看secondary的log文件,會發現發生了復制行為。

這時候登錄secondary,use test,db.book.find(),可以報錯了。

 

  1. error: { "$err" : "not master and slaveok=false", "code" : 13435 } 

沒有關系,在secondary讀取數據還需要我們做最后的一步,在需要讀取數據的secondary上執行。

 

  1. rs.slaveOK()

這時候再次db.book.find(),正常顯示結果了,沒有問題了。

 

添加節點

 

啟動新mongod節點

 

  1. mongod --dbpath /home/andyshi/mongo3/ --logpath /home/andyshi/mongo3/log.log --replSet shard1 --port 10003 --bind_ip 192.168.0.21   

連接primary節點,執行下面的命令。

 

  1. rs.add('192.168.0.21:10003') 
  2. rs.addArb('192.168.0.21:10003') 
  3. //重新配置 
  4. rs.reconfig(rs.conf()) 

 

強制一個節點成為primary

在mongodb2.0之后可以使用下面

相比master-slave,replica set的優點就是沒有單點故障,primary故障之后,整個replica set會自動選擇一個健康的節點成為primary,承擔寫的任務,可用性比master-slave的高,提供更高的可用性。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日照市| 桐梓县| 辰溪县| 恩施市| 阳西县| 保靖县| 布尔津县| 会宁县| 绩溪县| 文安县| 克拉玛依市| 大厂| 蓝山县| 图们市| 西和县| 舟山市| 图木舒克市| 花垣县| 彩票| 宁城县| 青川县| 岚皋县| 岱山县| 永定县| 冷水江市| 宁蒗| 吉隆县| 册亨县| 呈贡县| 从化市| 镇平县| 柳河县| 平原县| 芮城县| 华亭县| 盈江县| 利川市| 屯留县| 弥勒县| 漠河县| 富宁县|