第一次使用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/
安裝
- 配置官方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> - 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ě)
- 設(shè)置副本集名稱(chēng):在同一個(gè)副本集的 mongodb 的config文件增加:
<pre>
replSet=example #副本集名稱(chēng)
</pre> - 安全驗(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路徑自行定義
- 登陸任意一臺(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> - rs.status() 查看狀態(tài)
- 通過(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ě)入
- 在主庫(kù)中 執(zhí)行 use admin、 db.fsyncLock(),寫(xiě)入緩沖數(shù)據(jù)并鎖表
- 在同步完成后(rs.status()查看),在從(副本)庫(kù)運(yùn)行 mongodump -d ***** -o /****
- 在主庫(kù) 執(zhí)行 db.fsyncUnlock()
