mongoDB(二) mongoDB副本集實(shí)戰(zhàn)

mongoDB副本集實(shí)戰(zhàn)

背景

mongoDB單臺服務(wù)器的特點(diǎn):
- 數(shù)據(jù)有丟失風(fēng)險(xiǎn)
- 單臺服務(wù)器無法做高可用

mongoDB副本集的特點(diǎn):
- 高可用架構(gòu)息堂,預(yù)防數(shù)據(jù)丟失
- 多臺副本數(shù)據(jù)保持同步和一致
- mongodb副本集在有問題的時(shí)候自動(dòng)切換

實(shí)戰(zhàn)準(zhǔn)備

副本集環(huán)境配置

  • 生產(chǎn)環(huán)境至少三臺服務(wù)器
    機(jī)器IP
    主機(jī)名
    mongo端口
    配置文件路徑
    角色
    192.168.56.11
    centos7-node1
    27017
    /data/mongodb/27017/mongodb.conf

192.168.56.12
centos7-node2
27018
/data/mongodb/27018/mongodb.conf

192.168.56.13
centos7-node3
27019
/data/mongodb/27019/mongodb.conf

[root@centos7-node1 ~]# cd /opt/ && wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.17.tgz
[root@centos7-node1 ~]# tar xf /opt/mongodb-linux-x86_64-4.0.17.tgz
[root@centos7-node1 ~]# mv mongodb-linux-x86_64-4.0.17/ /usr/local/mongodb
[root@centos7-node1 ~]# mkdir -pv /data/mongodb/27017
[root@centos7-node1 ~]# vim /data/mongodb/27017/mongodb.conf 
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27017/mongodb.log
storage:
  dbPath: /data/mongodb/27017/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27017
  bindIp: 0.0.0.0
replication:
  replSetName: copySet
[root@centos7-node1 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27017/mongodb.conf    #啟動(dòng)服務(wù)
[root@centos7-node1 ~]# netstat -tanlp | grep mongo   #進(jìn)程查看
  • 其他節(jié)點(diǎn)的配置只需要修改端口即可,然后修改配置文件,日志目錄即可,下面是服務(wù)啟動(dòng)命令
[root@centos7-node2 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27018/mongodb.conf 
[root@centos7-node3 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27019/mongodb.conf 

副本集初始化

需要注意的事項(xiàng):

  • 隨便登錄到一個(gè)mongdb
[root@centos7-node1 27017]# /usr/local/mongodb/bin/mongo localhost:27017   #登陸到第一臺
> config={
 _id: "copySet",members:[
  {_id:0,host:"192.168.56.11:27017"},
  {_id:1,host:"192.168.56.12:27018"},
  {_id:2,host:"192.168.56.13:27019"},
 ]
}
> rs.initiate(config)
> rs.status()

測試副本集的數(shù)據(jù)同步

  • 插入數(shù)據(jù)只能從Primary進(jìn)行荣堰,Secondary只能讀取數(shù)據(jù)
copySet:PRIMARY> use test
copySet:PRIMARY> db.myuser.insert({userid:1})
  • 從庫查詢數(shù)據(jù)讀取: 無異常則ok
copySet:SECONDARY> rs.slaveOk()
copySet:SECONDARY> show dbs
copySet:SECONDARY> use test
copySet:SECONDARY> db.myuser.find()
copySet:SECONDARY> rs.printSlaveReplicationInfo()    #查看從庫延時(shí)

副本集的自動(dòng)切換

  • 當(dāng)primary掛了床未,會(huì)選舉其中的一臺作為primary
  • 如果集群之剩下一個(gè)實(shí)例的話,會(huì)出異常:(只有一臺的話就是)
# 登陸primary振坚,然后停服務(wù)
copySet:PRIMARY> use admin
copySet:PRIMARY> db.shutdownServer()

其余兩臺會(huì)選舉primary節(jié)點(diǎn)

通過優(yōu)先級指定primary

  • 默認(rèn)的優(yōu)先權(quán)重都是1
  • 副本集中的primary是選的權(quán)重最高的
  • 優(yōu)先級權(quán)重設(shè)置如下[在primary節(jié)點(diǎn)設(shè)置]:
copySet:PRIMARY> conf = rs.config()
copySet:PRIMARY> conf.members[0].priority = 5
copySet:PRIMARY> conf.members[1].priority = 4
copySet:PRIMARY> conf.members[2].priority = 3
copySet:PRIMARY> rs.reconfig(conf)

副本集的伸縮

  • mongoDB副本集的拓展性非常好薇搁,往副本集里添加實(shí)例和刪除實(shí)例都很方便
  • 添加副本集數(shù)據(jù)能夠自動(dòng)同步
  • 準(zhǔn)備一個(gè)新的機(jī)器和副本,設(shè)置端口和配置文件是27020,還有副本名稱
  • 集群中添加副本集是在primary上操作渡八,步驟如下
[root@centos7-node4 ~]# vim /data/mongodb/27020/mongodb.conf 
systemLog:
  destination: file
  logAppend: true
  path: /data/mongodb/27020/mongodb.log
storage:
  dbPath: /data/mongodb/27020/
  journal:
    enabled: true
processManagement:
  fork: true
net:
  port: 27020
  bindIp: 0.0.0.0
replication:
  replSetName: copySet
[root@centos7-node4 ~]# /usr/local/mongodb/bin/mongod -f /data/mongodb/27020/mongodb.conf    #啟動(dòng)新節(jié)點(diǎn)
copySet:PRIMARY> rs.add('192.168.56.14:27020')      #primary節(jié)點(diǎn)加入新的節(jié)點(diǎn)啃洋,然后數(shù)據(jù)自動(dòng)同步
copySet:PRIMARY> rs.remove('192.168.56.14:27020')   #移除secondary

mongoDB的備份和恢復(fù)

  • 單臺服務(wù)器,一定要備份

  • 備份還原工具有:

    • mongodump: 備份
    • mongostore: 還原
  • 副本集的備份要在primary上進(jìn)行

全量備份與還原

~]# mkdir /data/mongodbbacku
~]# /usr/local/mongodb/bin/mongodump -h 127.0.0.1:27020 -o /data/mongodbbackup/     #備份數(shù)據(jù)
~]# /usr/local/mongodb/bin/mongorestore -h 127.0.0.1 --port 27021 /data/mongodbbackup/             #還原數(shù)據(jù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屎鳍,一起剝皮案震驚了整個(gè)濱河市宏娄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逮壁,老刑警劉巖孵坚,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異窥淆,居然都是意外死亡卖宠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門忧饭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扛伍,“玉大人,你說我怎么就攤上這事眷昆⊙殉樱” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵亚斋,是天一觀的道長作媚。 經(jīng)常有香客問我,道長帅刊,這世上最難降的妖魔是什么八孝? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮萍启,結(jié)果婚禮上录肯,老公的妹妹穿的比我還像新娘。我一直安慰自己栏饮,他們只是感情好吧兔,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袍嬉,像睡著了一般境蔼。 火紅的嫁衣襯著肌膚如雪灶平。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天箍土,我揣著相機(jī)與錄音逢享,去河邊找鬼。 笑死吴藻,一個(gè)胖子當(dāng)著我的面吹牛瞒爬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沟堡,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼侧但,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弦叶?” 一聲冷哼從身側(cè)響起俊犯,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伤哺,沒想到半個(gè)月后燕侠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡立莉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年绢彤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜓耻。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茫舶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刹淌,到底是詐尸還是另有隱情饶氏,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布有勾,位于F島的核電站疹启,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蔼卡。R本人自食惡果不足惜喊崖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雇逞。 院中可真熱鬧荤懂,春花似錦、人聲如沸塘砸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掉蔬。三九已至粟耻,卻和暖如春查近,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挤忙。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谈喳,地道東北人册烈。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像婿禽,于是被迫代替她去往敵國和親赏僧。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 配置服務(wù)器,全部設(shè)置為靜態(tài)地址 轉(zhuǎn)到/home目錄,創(chuàng)建一個(gè)mongo目錄用做實(shí)驗(yàn),我們需要?jiǎng)?chuàng)建如下的目錄層級和空...
    justonlyyo閱讀 1,306評論 0 0
  • feisky云計(jì)算扭倾、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,815評論 0 5
  • 目錄 十一淀零、mongodb分片介紹十二、mongodb分片搭建十三膛壹、mongodb分片測試十四驾中、mongodb備份...
    XiaoMing丶閱讀 513評論 0 0
  • mongodb副本集即客戶端連接到整個(gè)副本集,不關(guān)心具體哪一臺機(jī)器是否掛掉模聋。主服務(wù)器負(fù)責(zé)整個(gè)副本集的讀寫肩民,副本集定...
    yaya520閱讀 7,123評論 0 4
  • 高可用性即HA(High Availability)指的是通過盡量縮短因日常維護(hù)操作(計(jì)劃)和突發(fā)的系統(tǒng)崩潰(非計(jì)...
    小波同學(xué)閱讀 21,019評論 6 54