真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何配置MongoDB副本集

MongoDB已經(jīng)成為市面上最知名的 NOSQL 數(shù)據(jù)庫。MongoDB是面向文檔的,它的無模式設(shè)計(jì)使得它在各種各樣的WEB 應(yīng)用當(dāng)中廣受歡迎。最讓我喜歡的特性之一是它的副本集(Replica Set),副本集將同一數(shù)據(jù)的多份拷貝放在一組 mongod 節(jié)點(diǎn)上,從而實(shí)現(xiàn)數(shù)據(jù)的冗余以及高可用性。

創(chuàng)新互聯(lián)建站是專業(yè)的武漢網(wǎng)站建設(shè)公司,武漢接單;提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行武漢網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

這篇教程將向你介紹如何配置一個(gè) MongoDB 副本集。

副本集的最常見配置需要一個(gè)主節(jié)點(diǎn)以及多個(gè)副節(jié)點(diǎn)。這之后啟動(dòng)的復(fù)制行為會(huì)從這個(gè)主節(jié)點(diǎn)到其他副節(jié)點(diǎn)。副本集不止可以針對意外的硬件故障和停機(jī)事件對數(shù)據(jù)庫提供保護(hù),同時(shí)也因?yàn)樘峁┝烁嗟墓?jié)點(diǎn)從而提高了數(shù)據(jù)庫客戶端數(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í)行以下安裝過程。

 

首先,我們需要給 apt 增加一個(gè) MongoDB 密鑰:

$ sudo apt-key adv--keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10

然后,將官方的 MongoDB 倉庫添加到 source.list 中:

$ sudo su

# echo "debhttp://repo.mongodb.org/apt/ubuntu "$(lsb_release-sc)"/mongodb-org/3.0 multiverse" | sudo tee/etc/apt/sources.list.d/mongodb-org-3.0.list

接下來更新 apt 倉庫并且安裝 MongoDB。

$ sudo apt-get update

$ sudo apt-get install -ymongodb-org

現(xiàn)在對 /etc/mongodb.conf 做一些更改

auth = true

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

keyFile=/var/lib/mongodb/keyFile

replSet=myReplica

 

第一行的作用是表明我們的數(shù)據(jù)庫需要驗(yàn)證才可以使用。keyfile配置用于 MongoDB 節(jié)點(diǎn)間復(fù)制行為的密鑰文件。replSet為副本集設(shè)置一個(gè)名稱。

接下來我們創(chuàng)建一個(gè)用于所有實(shí)例的密鑰文件。

$ echo -n"MyRandomStringForReplicaSet" | md5sum > keyFile

這將會(huì)創(chuàng)建一個(gè)含有 MD5 字符串的密鑰文件,但是由于其中包含了一些噪音,我們需要對他們清理后才能正式在 MongoDB 中使用。

$ echo -n"MyReplicaSetKey" | md5sum|grep -o "[0-9a-z]\+" >keyFile

grep命令的作用的是把將空格等我們不想要的內(nèi)容過濾掉之后的 MD5 字符串打印出來。

現(xiàn)在我們對密鑰文件進(jìn)行一些操作,讓它真正可用。

$ sudo cp keyFile/var/lib/mongodb

$ sudo chown mongodb:nogroupkeyFile

$ sudo chmod 400 keyFile

 

接下來,關(guān)閉此虛擬機(jī)。將其 Ubuntu 系統(tǒng)克隆到其他虛擬機(jī)上。

這是克隆后的副節(jié)點(diǎn)1和副節(jié)點(diǎn)2。確認(rèn)你已經(jīng)將它們的MAC地址重新初始化,并且克隆整個(gè)硬盤。

請注意,三個(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)上:

auto eth2

    iface eth2 inet static

    address 192.168.50.2

    netmask 255.255.255.0

在副節(jié)點(diǎn)1上:

auto eth2

    iface eth2 inet static

    address 192.168.50.3

    netmask 255.255.255.0

在副節(jié)點(diǎn)2上:

auto eth2

    iface eth2 inet static

    address 192.168.50.4

netmask 255.255.255.0

 

由于我們沒有 DNS 服務(wù),所以需要設(shè)置設(shè)置一下 /etc/hosts 這個(gè)文件,手工將主機(jī)名稱放到此文件中。

在主節(jié)點(diǎn)上:

127.0.0.1 localhost primary

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

在副節(jié)點(diǎn)1上:

127.0.0.1 localhostsecondary1

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

在副節(jié)點(diǎn)2上:

127.0.0.1 localhostsecondary2

192.168.50.2 primary

192.168.50.3 secondary1

192.168.50.4 secondary2

使用 ping 命令檢查各個(gè)節(jié)點(diǎn)之間的連接。

$ ping primary

$ ping secondary1

$ ping secondary2

 

配置副本集

驗(yàn)證各個(gè)節(jié)點(diǎn)可以正常連通后,我們就可以新建一個(gè)管理員用戶,用于之后的副本集操作。

在主節(jié)點(diǎn)上,打開 /etc/mongodb.conf文件,將 auth 和 replSet 兩項(xiàng)注釋掉。

dbpath=/var/lib/mongodb

logpath=/var/log/mongodb/mongod.log

logappend=true

#auth = true

keyFile=/var/lib/mongodb/keyFile

#replSet=myReplica

 

在一個(gè)新安裝的 MongoDB 上配置任何用戶或副本集之前,你需要注釋掉 auth 行。默認(rèn)情況下,MongoDB 并沒有創(chuàng)建任何用戶。而如果在你創(chuàng)建用戶前啟用了 auth,你就不能夠做任何事情。你可以在創(chuàng)建一個(gè)用戶后再次啟用 auth。

修改 /etc/mongodb.conf 之后,重啟 mongod 進(jìn)程。

$ sudo service mongod restart

現(xiàn)在連接到 MongoDB master:

$ mongo:27017

連接 MongoDB 后,新建管理員用戶。

> use admin

> db.createUser({

user:"admin",

pwd:"

})

重啟 MongoDB:

$ sudo service mongod restart

再次連接到 MongoDB,用以下命令將副節(jié)點(diǎn)1 和副節(jié)點(diǎn)2節(jié)點(diǎn)添加到我們的副本集中。

> use admin

>db.auth("admin","myreallyhardpassword")

> rs.initiate()

> rs.add("secondary1:27017")

>rs.add("secondary2:27017")

 

現(xiàn)在副本集到手了,可以開始我們的項(xiàng)目了。參照 官方驅(qū)動(dòng)文檔 來了解如何連接到副本集。如果你想要用 Shell 來請求數(shù)據(jù),那么你需要連接到主節(jié)點(diǎn)上來插入或者請求數(shù)據(jù),副節(jié)點(diǎn)不行。如果你執(zhí)意要嘗試用副本集操作,那么以下錯(cuò)誤信息就蹦出來招呼你了。

myReplica:SECONDARY>

myReplica:SECONDARY> showdatabases

2015-05-10T03:09:24.131+0000E QUERY    Error: listDatabases failed:{"note" : "from execCommand", "ok" : 0,"errmsg" : "not master" }

    at Error ()

    at Mongo.getDBs(src/mongo/shell/mongo.js:47:15)

    at shellHelper.show(src/mongo/shell/utils.js:630:33)

at shellHelper(src/mongo/shell/utils.js:524:36)

at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

 

如果你要從 shell 連接到整個(gè)副本集,你可以安裝如下命令。在副本集中的失敗切換是自動(dòng)的。

$ mongoprimary,secondary1,secondary2:27017/?replicaSet=myReplica

如果你使用其它驅(qū)動(dòng)語言(例如,JavaScript、Ruby 等等),格式也許不同。

 

希望這篇教程能對你有所幫助。你可以使用Vagrant來自動(dòng)完成你的本地環(huán)境配置,并且加速你的代碼。

免費(fèi)領(lǐng)取兄弟連IT教育原創(chuàng)云計(jì)算培訓(xùn)視頻/細(xì)說linux教程,詳情咨詢官網(wǎng)客服:http://www.lampbrother.net/linux/或者勾搭Q2430675018~

歡迎加入linux交流群 478068715

 


新聞標(biāo)題:如何配置MongoDB副本集
文章路徑:http://weahome.cn/article/pijggg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部