在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫/ 復(fù)制
更新文檔
GridFS
Rockmongo 管理工具
Map Reduce
Java
創(chuàng)建備份
數(shù)據(jù)模型
創(chuàng)建數(shù)據(jù)庫
映射
查詢文檔
索引限制
ObjectId
刪除文檔
數(shù)據(jù)類型
高級索引
索引
優(yōu)勢
記錄排序
查詢分析
插入文檔
刪除集合
全文檢索
創(chuàng)建集合
概述
數(shù)據(jù)庫引用
覆蓋索引查詢
安裝環(huán)境
PHP
刪除數(shù)據(jù)庫
固定集合
關(guān)系
聚合
自動(dòng)增長
復(fù)制
限制記錄
部署
分片
正則表達(dá)式
原子操作

復(fù)制

復(fù)制是一種在多個(gè)服務(wù)器上同步數(shù)據(jù)的過程。通過在不同的數(shù)據(jù)庫服務(wù)器上實(shí)現(xiàn)多個(gè)數(shù)據(jù)副本,復(fù)制能夠?qū)崿F(xiàn)數(shù)據(jù)冗余,提高數(shù)據(jù)的可用性,從而避免了僅僅因?yàn)橐慌_(tái)服務(wù)器故障后就會(huì)產(chǎn)生的數(shù)據(jù)庫災(zāi)難。總之,復(fù)制可以使你免受硬件故障與服務(wù)中斷的影響,及時(shí)恢復(fù)數(shù)據(jù)。由于數(shù)據(jù)有多個(gè)副本,所以可以將其中一個(gè)副本用于災(zāi)難恢復(fù)、報(bào)告或備份。

為什么需要復(fù)制

  • 保持?jǐn)?shù)據(jù)安全
  • 保證數(shù)據(jù)的高可用性(24 小時(shí) × 7 天,全年無休)
  • 災(zāi)難恢復(fù)
  • 無需停機(jī)維護(hù)(比如進(jìn)行備份、索引重建,壓縮等任務(wù))
  • 讀取的可擴(kuò)展性(可讀取其他副本)
  • 副本集對應(yīng)用的公開性

復(fù)制在 MongoDB 中的運(yùn)作方式

MongoDB 使用副本集(replica set)來實(shí)現(xiàn)復(fù)制操作。副本集是一組托管同一數(shù)據(jù)集的 mongod 對象。在副本集中,主節(jié)點(diǎn)負(fù)責(zé)接收寫入操作。所有其他的實(shí)例(從節(jié)點(diǎn))則通過執(zhí)行主節(jié)點(diǎn)的操作來擁有同樣的數(shù)據(jù)集。副本集中只有一個(gè)主節(jié)點(diǎn)。

  1. 副本集具有 2 個(gè)或多個(gè)節(jié)點(diǎn)(但一般最少需要 3 個(gè)節(jié)點(diǎn))。
  2. 副本集只有一個(gè)主節(jié)點(diǎn),其他全是從節(jié)點(diǎn)。
  3. 所有數(shù)據(jù)都是從主節(jié)點(diǎn)復(fù)制到從節(jié)點(diǎn)上的。
  4. 當(dāng)發(fā)生自動(dòng)故障轉(zhuǎn)移或維護(hù)時(shí),會(huì)重新推舉一個(gè)新的主節(jié)點(diǎn)。
  5. 當(dāng)失敗節(jié)點(diǎn)恢復(fù)后,該節(jié)點(diǎn)重新又連接到副本集中,重新作為從節(jié)點(diǎn)。

下圖展示了一個(gè)典型的 MongoDB 復(fù)制圖??蛻舳藨?yīng)用總是跟主節(jié)點(diǎn)交互,主節(jié)點(diǎn)將數(shù)據(jù)復(fù)制到從節(jié)點(diǎn)上。

http://wiki.jikexueyuan.com/project/mongodb/images/replication.png" alt="replication" />

副本集特點(diǎn)

  • 具有 N 個(gè)節(jié)點(diǎn)的集群
  • 任何節(jié)點(diǎn)都可能成為主節(jié)點(diǎn)
  • 所有寫入操作必須由主節(jié)點(diǎn)來完成
  • 自動(dòng)故障轉(zhuǎn)移
  • 自動(dòng)故障恢復(fù)
  • 重新推舉主節(jié)點(diǎn)

建立副本集

在本教程中,我們將把單獨(dú)的一個(gè) mongod 實(shí)例轉(zhuǎn)變?yōu)楦北炯?,步驟如下:

  1. 關(guān)閉正在運(yùn)行的 MongoDB 服務(wù)器。

  2. 指定 --replSet 選項(xiàng)來開啟 MongoDB 服務(wù)器。--replSet 的基本格式如下:

    mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

范例

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

該命令會(huì)在端口 27017 處啟動(dòng)一個(gè)名為 rs0 的 MongoDB 實(shí)例。在命令行提示符上輸入命令連接到該 MongoDB 對象上。在 MongoDB 客戶端使用 rs.initiate() 命令來初始化一個(gè)新的副本集。檢查該副本集設(shè)置,則需使用 rs.conf()。檢查副本集狀態(tài)使用 rs.status()。

為副本集添加成員

為了向副本集添加成員,在多臺(tái)機(jī)器上開啟多個(gè) MongoDB 實(shí)例。開啟一個(gè) MongoDB 客戶端,然后使用 rs.add() 命令。

語法格式

基本的 rs.add() 命令語法格式如下所示:

>rs.add(HOST_NAME:PORT)

范例

假設(shè) MongoDB 實(shí)例名稱為 mongodb1.net,且運(yùn)行在 27017 端口處。為了將該實(shí)例添加到副本集中,請?jiān)?MongoDB 客戶端中使用 rs.add()。

>rs.add("mongod1.net:27017")
>  

只有當(dāng)連接到主節(jié)點(diǎn)上時(shí),才能向副本集中添加 MongoDB 實(shí)例。要想查看是否連接的是主節(jié)點(diǎn),請?jiān)?MongoDB 客戶端上使用 db.isMaster() 命令。

上一篇:索引下一篇:全文檢索