安裝MongoDB配置Replica Set

來源:互聯網
上載者:User

MongoDB的環境主要包括StandAlone,Replication和Sharding。

  • StandAlone:單機環境,一般開發測試的時候用。
  • Replication:主從結構,一個Primary,多個Secondary,可能會有Arbitry。
    • Primary掛掉之後,會選舉出一個Secondary作為Primary,與zookeeper類似。
    • Arbitry上面不存資料,只是為了湊數。選舉演算法要求節點數必須是奇數個,如果Primary+Secondary不是奇數個,就要用Arbitry湊數。
    • 寫資料只能在Primary,讀資料預設也在Primary,可以配置成從Secondary讀,可以選最近的節點。
    • 資料在Primary上寫成功之後,會將操作記錄在oplog中,Secondary將oplog拷貝過去,然後照著操作一遍,就有資料了。
    • Primary和Secondary上面的資料保證最終一致性,可以為寫操作配置write concern,有幾個層級:在Primary上寫完就認為寫成功;寫到oplog後認為寫成功;寫到一個/多個/某個/某幾個Secondary之後認為寫成功,等等。
  • Sharding:share nothing的結構,每台機器只存一部分資料。mongod伺服器存資料,mongos伺服器負責路由讀寫請求,中繼資料存在config資料庫中。

因為資料量和機器量的原因,項目最終用了一個Primary,一個Secondary,一個Arbitry。我自己的開發環境是Ubuntu,測試環境是CentOS。安裝的是64位的MongoDB。

Ubuntu上的安裝
sudo apt-get install mongodb-10gen
CentOS上的安裝

配置yum源,建立檔案:/etc/yum.repos.d/mongodb.repo

[mongodb]name=MongoDB Repositorybaseurl=http://downloads-distro.mongodb.org/repo/RedHat/os/x86_64/gpgcheck=0enabled=1

安裝命令:

yum install mongo-10gen mongo-10gen-server
配置

每台機器上面的設定檔/etc/mongod.conf修改成下面的:

#資料庫檔案所在位置(預設)dbpath=/var/lib/mongo#日誌所在位置(預設)logpath=/var/log/mongo/mongod.log#pid所在位置(預設)pidfilepath = /var/run/mongodb/mongod.pid#keyFile所在位置,產生方式在後面(添加)keyFile=/var/lib/mongo/key#連接埠(預設)port=27017#每次啟動後日誌追加在後面,不會建立記錄檔(預設)logappend=true#用deamon方式啟動(添加)fork=true#開啟動作記錄,用於故障恢複和持久化(預設)journal=true#replica set的名字(添加)replSet=test-set

在每台機器上運行:

sudo mongod -f /etc/mongod.conf

我的環境裡面,Primary ip: 192.168.1.1,Secondary ip: 192.168.1.2,Arbitary ip: 192.168.1.3。在單機上可以將多個mongodb設定成不同連接埠,我測試了一下也是可以的。

在Primary上運行“mongo”,開啟命令列,設定Replica Set:

rs.initiate(    {"_id" : "test-set",     "members" : [        {"_id" : 1, "host" : "192.168.1.1"},        {"_id" : 2, "host" : "192.168.1.2"},        {"_id" : 3, "host" : "192.168.1.3", "arbiterOnly" : true}    ]});{ "info" : "Config now saved locally. Should come online in about a minute.", "ok" : 1 }

曆史成功後需要等一段時間,他會選舉Primary,然後查看Replica Set的狀態:

test-set:PRIMARY> rs.status(){        "set" : "test-set",        "date" : ISODate("2014-02-21T10:28:55Z"),        "myState" : 7,        "members" : [                {                        "_id" : 1,                        "name" : "192.168.1.1:27017",                        "health" : 1,                        "state" : 1,                        "stateStr" : "PRIMARY",                        "uptime" : 4086,                        "optime" : Timestamp(1392972480, 1),                        "optimeDate" : ISODate("2014-02-21T08:48:00Z"),                        "lastHeartbeat" : ISODate("2014-02-21T10:28:54Z"),                        "lastHeartbeatRecv" : ISODate("2014-02-21T10:28:53Z"),                        "pingMs" : 0                },                {                        "_id" : 2,                        "name" : "192.168.1.2:27017",                        "health" : 1,                        "state" : 2,                        "stateStr" : "SECONDARY",                        "uptime" : 3997,                        "optime" : Timestamp(1392972480, 1),                        "optimeDate" : ISODate("2014-02-21T08:48:00Z"),                        "lastHeartbeat" : ISODate("2014-02-21T10:28:54Z"),                        "lastHeartbeatRecv" : ISODate("2014-02-21T10:28:55Z"),                        "pingMs" : 0,                        "syncingTo" : "192.168.131.15:27017"                },                {                        "_id" : 3,                        "name" : "192.168.1.3:27017",                        "health" : 1,                        "state" : 7,                        "stateStr" : "ARBITER",                        "uptime" : 5781,                        "self" : true                }        ],        "ok" : 1}

這樣整個replica set就配置成功了,還是比較簡單的。

MongoDB 的詳細介紹:請點這裡
MongoDB 的:請點這裡

MongoDB備份與恢複

CentOS編譯安裝MongoDB

CentOS 編譯安裝 MongoDB與mongoDB的php擴充

CentOS 6 使用 yum 安裝MongoDB及伺服器端配置

Ubuntu 13.04下安裝MongoDB2.4.3

如何在MongoDB中建立新資料庫和集合

MongoDB入門必讀(概念與實戰並重)

《MongoDB 權威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.