[分布式]Mongodb環(huán)境配置

第一次使用mongodb是在2013年初,將當(dāng)時(shí)一個(gè)約有500w+記錄的一個(gè)mysql數(shù)據(jù)庫(kù)遷移到了mongodb上,對(duì)于這種關(guān)系性不強(qiáng)的數(shù)據(jù),遷移到mongodb上相對(duì)還是比較合適的。但也基本上到此為止了,mongodb在運(yùn)維和恢復(fù)上遠(yuǎn)不及mysql那么成熟,導(dǎo)致后來(lái)運(yùn)維跟不上后,也逐漸少用,因?yàn)榇蟛糠值臉I(yè)務(wù)需求在mysql上已經(jīng)能夠滿足。

不要過(guò)度相信blog,技術(shù)變化太快,看官方文檔才是正確的選擇:官方文檔;http://docs.mongodb.org/manual/

安裝


  1. 配置官方y(tǒng)um源,創(chuàng)建/etc/yum.repos.d/mongodb.repo
    <pre>
    [mongodb]
    name=MongoDB Repository
    baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
    gpgcheck=0
    enabled=1
    </pre>
  2. yum 安裝
    <pre>
    yum -y install mongodb-org mongodb-org-server
    </pre>

配置


<pre>

基本設(shè)置

bind_ip = 192.168.1.101
port = 27017
fork = true
pidfilepath = /var/run/mongodb/mongodb.pid
logpath = /var/log/mongodb/mongodb.log
dbpath =/data/DB/mongodb
journal = true

最大連接數(shù)

maxConns=500

登陸驗(yàn)證

auth = true

副本集配置

replSet=example

oplogSize =1000 #同步日志大?。∕B)

開(kāi)啟簡(jiǎn)單web監(jiān)控

rest=true

使用追加日志方式

logappend = true

開(kāi)啟慢查詢?nèi)罩?/h1>

profile=1
slowms= 100 #記錄超過(guò)**ms的慢查詢記錄
</pre>

運(yùn)行


<pre>
service mongod start
chkconfig mongod on
</pre>

副本集


副本集相當(dāng)于mysql中的主-從架構(gòu),每個(gè)節(jié)點(diǎn)的數(shù)據(jù)都是同步的,但在mongodb中增加了“仲裁節(jié)點(diǎn)”,只用于節(jié)點(diǎn)的負(fù)載分配計(jì)算,不參與實(shí)際數(shù)據(jù)的存儲(chǔ)。

如果只剩一個(gè)副本集服務(wù)可用時(shí)候,則該服務(wù)會(huì)被設(shè)定為SECONDARY,此時(shí)默認(rèn)將會(huì)不可讀寫(xiě)

  1. 設(shè)置副本集名稱(chēng):在同一個(gè)副本集的 mongodb 的config文件增加:
    <pre>
    replSet=example #副本集名稱(chēng)
    </pre>
  2. 安全驗(yàn)證
    關(guān)于 keyFile:http://docs.mongodb.org/master/reference/configuration-options/#security.keyFile
  • 生成公共key驗(yàn)證文件,例如:通過(guò)OpenSSL 生成一段隨機(jī)key(openssl rand -base64 n ,n代表長(zhǎng)度)
  • 修改key文件的用戶組(mongod:mongod)、讀寫(xiě)權(quán)限(600)
  • 在/etc/mongod.conf 添加配置
    <pre>
    keyFile=/data/DB/mongodb/key
    </pre>

keyFile路徑自行定義

  1. 登陸任意一臺(tái)mongo服務(wù),執(zhí)行rs.initiate(cfg),cfg 為配置的內(nèi)容(arbiterOnly 設(shè)置為仲裁服務(wù),不做數(shù)據(jù)存儲(chǔ));
    <pre>
    {_id:"example","members": [
    {_id:1,"host":"192.168.94.112:27017","priority":2.0},
    {_id:2,"host":"192.168.94.113:27017"},
    {_id:0,"host":"192.168.94.120:27017","arbiterOnly":true}]}</pre>
  2. rs.status() 查看狀態(tài)
  3. 通過(guò)mongodb的rest服務(wù)查看如下
    無(wú)標(biāo)題.png

    更改副本集配置

通過(guò) rs 的命令重新加載config文件,rs.reconfig(cfg),注意必需在 主節(jié)點(diǎn)所在服務(wù)才能重新加載配置。

備份與恢復(fù)


備份通過(guò)SECONDARY的機(jī)器進(jìn)行備份,避免影響數(shù)據(jù)寫(xiě)入

  1. 在主庫(kù)中 執(zhí)行 use admin、 db.fsyncLock(),寫(xiě)入緩沖數(shù)據(jù)并鎖表
  2. 在同步完成后(rs.status()查看),在從(副本)庫(kù)運(yùn)行 mongodump -d ***** -o /****
  3. 在主庫(kù) 執(zhí)行 db.fsyncUnlock()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容