MongoDB 已經(jīng)成為市面上最知名的 NoSQL 數(shù)據(jù)庫(kù)。MongoDB 是面向文檔的,它的無(wú)模式設(shè)計(jì)使得它在各種各樣的WEB 應(yīng)用當(dāng)中廣受歡迎。
MongoDB 已經(jīng)成為市面上最知名的 NoSQL 數(shù)據(jù)庫(kù)。MongoDB 是面向文檔的,它的無(wú)模式設(shè)計(jì)使得它在各種各樣的WEB 應(yīng)用當(dāng)中廣受歡迎。最讓我喜歡的特性之一是它的副本集(Replica Set),副本集將同一數(shù)據(jù)的多份拷貝放在一組 mongod 節(jié)點(diǎn)上,從而實(shí)現(xiàn)數(shù)據(jù)的冗余以及高可用性。
這篇教程將向你介紹如何配置一個(gè) MongoDB 副本集。
副本集的最常見(jiàn)配置需要一個(gè)主節(jié)點(diǎn)以及多個(gè)副節(jié)點(diǎn)。這之后啟動(dòng)的復(fù)制行為會(huì)從這個(gè)主節(jié)點(diǎn)到其他副節(jié)點(diǎn)。副本集不止可以針對(duì)意外的硬件故障和停機(jī)事件對(duì)數(shù)據(jù)庫(kù)提供保護(hù),同時(shí)也因?yàn)樘峁┝烁嗟墓?jié)點(diǎn)從而提高了數(shù)據(jù)庫(kù)客戶端數(shù)據(jù)讀取的吞吐量。
配置環(huán)境這個(gè)教程里,我們會(huì)配置一個(gè)包括一個(gè)主節(jié)點(diǎn)以及兩個(gè)副節(jié)點(diǎn)的副本集。
為了達(dá)到這個(gè)目的,我們使用了3個(gè)運(yùn)行在 VirtualBox 上的虛擬機(jī)。我會(huì)在這些虛擬機(jī)上安裝 Ubuntu 14.04,并且安裝 MongoDB 官方包。
我會(huì)在一個(gè)虛擬機(jī)實(shí)例上配置好所需的環(huán)境,然后將它克隆到其他的虛擬機(jī)實(shí)例上。因此,選擇一個(gè)名為 master 的虛擬機(jī),執(zhí)行以下安裝過(guò)程。
首先,,我們需要給 apt 增加一個(gè) MongoDB 密鑰:
然后,將官方的 MongoDB 倉(cāng)庫(kù)添加到 source.list 中:
接下來(lái)更新 apt 倉(cāng)庫(kù)并且安裝 MongoDB。
現(xiàn)在對(duì) /etc/mongodb.conf 做一些更改
第一行的作用是表明我們的數(shù)據(jù)庫(kù)需要驗(yàn)證才可以使用。keyfile 配置用于 MongoDB 節(jié)點(diǎn)間復(fù)制行為的密鑰文件。replSet 為副本集設(shè)置一個(gè)名稱。
接下來(lái)我們創(chuàng)建一個(gè)用于所有實(shí)例的密鑰文件。
這將會(huì)創(chuàng)建一個(gè)含有 MD5 字符串的密鑰文件,但是由于其中包含了一些噪音,我們需要對(duì)他們清理后才能正式在 MongoDB 中使用。
grep 命令的作用的是把將空格等我們不想要的內(nèi)容過(guò)濾掉之后的 MD5 字符串打印出來(lái)。
現(xiàn)在我們對(duì)密鑰文件進(jìn)行一些操作,讓它真正可用。
接下來(lái),關(guān)閉此虛擬機(jī)。將其 Ubuntu 系統(tǒng)克隆到其他虛擬機(jī)上。
這是克隆后的副節(jié)點(diǎn)1和副節(jié)點(diǎn)2。確認(rèn)你已經(jīng)將它們的MAC地址重新初始化,并且克隆整個(gè)硬盤(pán)。
請(qǐng)注意,三個(gè)虛擬機(jī)示例需要在同一個(gè)網(wǎng)絡(luò)中以便相互通訊。因此,我們需要它們弄到“互聯(lián)網(wǎng)"上去。
這里推薦給每個(gè)虛擬機(jī)設(shè)置一個(gè)靜態(tài) IP 地址,而不是使用 DHCP。這樣它們就不至于在 DHCP 分配IP地址給他們的時(shí)候失去連接。
像下面這樣編輯每個(gè)虛擬機(jī)的 /etc/networks/interfaces 文件。
在主節(jié)點(diǎn)上:
在副節(jié)點(diǎn)1上:
在副節(jié)點(diǎn)2上:
由于我們沒(méi)有 DNS 服務(wù),所以需要設(shè)置設(shè)置一下 /etc/hosts 這個(gè)文件,手工將主機(jī)名稱放到此文件中。
在主節(jié)點(diǎn)上:
在副節(jié)點(diǎn)1上:
在副節(jié)點(diǎn)2上:
使用 ping 命令檢查各個(gè)節(jié)點(diǎn)之間的連接。
配置副本集驗(yàn)證各個(gè)節(jié)點(diǎn)可以正常連通后,我們就可以新建一個(gè)管理員用戶,用于之后的副本集操作。
在主節(jié)點(diǎn)上,打開(kāi) /etc/mongodb.conf 文件,將 auth 和 replSet 兩項(xiàng)注釋掉。
在一個(gè)新安裝的 MongoDB 上配置任何用戶或副本集之前,你需要注釋掉 auth 行。默認(rèn)情況下,MongoDB 并沒(méi)有創(chuàng)建任何用戶。而如果在你創(chuàng)建用戶前啟用了 auth,你就不能夠做任何事情。你可以在創(chuàng)建一個(gè)用戶后再次啟用 auth。
修改 /etc/mongodb.conf 之后,重啟 mongod 進(jìn)程。
現(xiàn)在連接到 MongoDB master:
連接 MongoDB 后,新建管理員用戶。
重啟 MongoDB:
再次連接到 MongoDB,用以下命令將 副節(jié)點(diǎn)1 和副節(jié)點(diǎn)2節(jié)點(diǎn)添加到我們的副本集中。
現(xiàn)在副本集到手了,可以開(kāi)始我們的項(xiàng)目了。參照 官方驅(qū)動(dòng)文檔 來(lái)了解如何連接到副本集。如果你想要用 Shell 來(lái)請(qǐng)求數(shù)據(jù),那么你需要連接到主節(jié)點(diǎn)上來(lái)插入或者請(qǐng)求數(shù)據(jù),副節(jié)點(diǎn)不行。如果你執(zhí)意要嘗試用副本集操作,那么以下錯(cuò)誤信息就蹦出來(lái)招呼你了。
如果你要從 shell 連接到整個(gè)副本集,你可以安裝如下命令。在副本集中的失敗切換是自動(dòng)的。
如果你使用其它驅(qū)動(dòng)語(yǔ)言(例如,JavaScript、Ruby 等等),格式也許不同。
希望這篇教程能對(duì)你有所幫助。你可以使用Vagrant來(lái)自動(dòng)完成你的本地環(huán)境配置,并且加速你的代碼。
MongoDB 3.0 正式版發(fā)布下載
CentOS編譯安裝MongoDB
CentOS 編譯安裝 MongoDB與mongoDB的php擴(kuò)展
CentOS 6 使用 yum 安裝MongoDB及服務(wù)器端配置
Ubuntu 13.04下安裝MongoDB2.4.3
MongoDB入門必讀(概念與實(shí)戰(zhàn)并重)
Ubunu 14.04下MongoDB的安裝指南
《MongoDB 權(quán)威指南》(MongoDB: The Definitive Guide)英文文字版[PDF]
Nagios監(jiān)控MongoDB分片集群服務(wù)實(shí)戰(zhàn)
基于CentOS 6.5操作系統(tǒng)搭建MongoDB服務(wù)
MongoDB 的詳細(xì)介紹:請(qǐng)點(diǎn)這里
MongoDB 的下載地址:請(qǐng)點(diǎn)這里
via: How to set up a Replica Set on MongoDB
作者:Christopher Valerio 譯者:mr-ping 校對(duì):wxy
本文由 LCTT 原創(chuàng)翻譯,Linux中國(guó) 榮譽(yù)推出
本文永久更新鏈接地址:
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com