第一次使用mongodb是在2013年初,將當(dāng)時(shí)一個(gè)約有500w+記錄的一個(gè)mysql數(shù)據(jù)庫遷移到了mongodb上洗做,對于這種關(guān)系性不強(qiáng)的數(shù)據(jù)闯割,遷移到mongodb上相對還是比較合適的曙咽。但也基本上到此為止了拉讯,mongodb在運(yùn)維和恢復(fù)上遠(yuǎn)不及mysql那么成熟涤浇,導(dǎo)致后來運(yùn)維跟不上后鳖藕,也逐漸少用魔慷,因?yàn)榇蟛糠值臉I(yè)務(wù)需求在mysql上已經(jīng)能夠滿足。
不要過度相信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 #同步日志大醒凇(MB)
開啟簡單web監(jiān)控
rest=true
使用追加日志方式
logappend = true
開啟慢查詢?nèi)罩?/h1>
profile=1
slowms= 100 #記錄超過**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ù)的存儲。
如果只剩一個(gè)副本集服務(wù)可用時(shí)候例获,則該服務(wù)會被設(shè)定為SECONDARY汉额,此時(shí)默認(rèn)將會不可讀寫
- 設(shè)置副本集名稱:在同一個(gè)副本集的 mongodb 的config文件增加:
<pre>
replSet=example #副本集名稱
</pre> - 安全驗(yàn)證
關(guān)于 keyFile:http://docs.mongodb.org/master/reference/configuration-options/#security.keyFile
- 生成公共key驗(yàn)證文件,例如:通過OpenSSL 生成一段隨機(jī)key(openssl rand -base64 n 榨汤,n代表長度)
- 修改key文件的用戶組(mongod:mongod)蠕搜、讀寫權(quán)限(600)
- 在/etc/mongod.conf 添加配置
<pre>
keyFile=/data/DB/mongodb/key
</pre>
keyFile路徑自行定義
- 登陸任意一臺mongo服務(wù),執(zhí)行rs.initiate(cfg),cfg 為配置的內(nèi)容(arbiterOnly 設(shè)置為仲裁服務(wù)收壕,不做數(shù)據(jù)存儲)妓灌;
<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)
- 通過mongodb的rest服務(wù)查看如下
更改副本集配置
通過 rs 的命令重新加載config文件,rs.reconfig(cfg),注意必需在 主節(jié)點(diǎn)所在服務(wù)才能重新加載配置蜜宪。
備份與恢復(fù)
備份通過SECONDARY的機(jī)器進(jìn)行備份虫埂,避免影響數(shù)據(jù)寫入
- 在主庫中 執(zhí)行 use admin、 db.fsyncLock()圃验,寫入緩沖數(shù)據(jù)并鎖表
- 在同步完成后(rs.status()查看)告丢,在從(副本)庫運(yùn)行 mongodump -d ***** -o /****
- 在主庫 執(zhí)行 db.fsyncUnlock()