成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

MongoDB副本集搭建

RayKr / 2204人閱讀

摘要:下一小節(jié)我會(huì)和大家分享如何在真實(shí)的生產(chǎn)環(huán)境中創(chuàng)建副本集。好了,中副本集的搭建我們就先說到這里,小伙伴們有問題歡迎留言討論。

我們之前的案例都是在單個(gè)節(jié)點(diǎn)上實(shí)現(xiàn)的,在生產(chǎn)環(huán)境中這種做法是有風(fēng)險(xiǎn)的,如果服務(wù)宕機(jī)、崩潰或者硬盤壞了都會(huì)對公司業(yè)務(wù)造成損失,因此我們需要數(shù)據(jù)備份。在MongoDB中我們可以通過副本集來實(shí)現(xiàn)這一需求,MongoDB副本集(Replica Set)是有自動(dòng)故障恢復(fù)功能的主從集群,有一個(gè)Primary節(jié)點(diǎn)和一個(gè)或多個(gè)Secondary節(jié)點(diǎn)組成,如果Primary崩潰了,會(huì)自動(dòng)從Secondary中選擇一個(gè)將其升級(jí)為新的主服務(wù)器,本文我們先來看看副本集環(huán)境的搭建。

本文是MongoDB系列的第十五篇文章,了解前面的文章有助于更好的理解本文:


1.Linux上安裝MongoDB
2.MongoDB基本操作
3.MongoDB數(shù)據(jù)類型
4.MongoDB文檔更新操作
5.MongoDB文檔查詢操作(一)
6.MongoDB文檔查詢操作(二)
7.MongoDB文檔查詢操作(三)
8.MongoDB查看執(zhí)行計(jì)劃
9.初識(shí)MongoDB中的索引
10.MongoDB中各種類型的索引
11.MongoDB固定集合
12.MongoDB管道操作符(一)
13.MongoDB管道操作符(二)
14.MongoDB中MapReduce使用


單臺(tái)服務(wù)器模擬

我們在實(shí)際的生產(chǎn)環(huán)境中肯定是多臺(tái)服務(wù)器部署,但是在自己學(xué)習(xí)過程中,我們可以在一臺(tái)服務(wù)器上來模擬這個(gè)環(huán)境,這樣可以簡化我們的操作,讓小伙伴們快速上手。下一小節(jié)我會(huì)和大家分享如何在真實(shí)的生產(chǎn)環(huán)境中創(chuàng)建副本集。

好了,開始吧。

首先我們在Linux根目錄下創(chuàng)建/data/db目錄作為我們的數(shù)據(jù)保存目錄,然后執(zhí)行如下命令啟動(dòng)一個(gè)mongo shell:

mongo --nodb

--nodb表示啟動(dòng)時(shí)不連接任何數(shù)據(jù)庫,然后通過如下命令創(chuàng)建一個(gè)副本集:

replicaSet=new ReplSetTest({nodes:3})

在創(chuàng)建的日志中,我們可以看到三個(gè)實(shí)例的端口號(hào),我這里分別是20000、20001、20002,此時(shí)我們的副本集創(chuàng)建好了,但是并未啟動(dòng),接下來執(zhí)行如下命令啟動(dòng)三個(gè)mongodb實(shí)例:

replicaSet.startSet()

再執(zhí)行如下命令配置復(fù)制功能:

replicaSet.initiate()

這樣環(huán)境基本就配好了,此時(shí)當(dāng)前的shell不要關(guān)閉,我們重新打開一個(gè)Linux命令窗口,執(zhí)行如下命令:

mongo 192.168.248.128:20000/sang_1

表示連接端口為20000的那個(gè)實(shí)例中的sang_1數(shù)據(jù)庫,連接成功后,我們可以執(zhí)行如下命令查看當(dāng)前實(shí)例的身份,如下:

db.isMaster()

返回的數(shù)據(jù)很多,其中有一條是"ismaster" : true,表示這是一個(gè)主節(jié)點(diǎn),此時(shí)我們再分別打開兩個(gè)Linux窗口,分別執(zhí)行如下兩條命令,進(jìn)入另外兩個(gè)節(jié)點(diǎn):

mongo 192.168.248.128:20001/sang_1
mongo 192.168.248.128:20002/sang_1

連接成功之后,依然可以通過db.isMaster()命令來查看備份節(jié)點(diǎn)的身份,我們發(fā)現(xiàn)此時(shí)"ismaster" : false,表示這是一個(gè)備份節(jié)點(diǎn),此時(shí)我們可以先做個(gè)簡單的測試了,此時(shí)我在主節(jié)點(diǎn)(端口為20000)那個(gè)節(jié)點(diǎn)上寫一個(gè)文檔,寫完之后,我們看看其他副本集成員上是否有我剛才的寫的文檔的副本,執(zhí)行命令順序如下:

主節(jié)點(diǎn)寫入數(shù)據(jù):

db.collect1.insert({x:"hahaha"})

任意一個(gè)副本節(jié)點(diǎn),先執(zhí)行如下命令表示可以從備份節(jié)點(diǎn)讀取數(shù)據(jù):

db.setSlaveOk()

然后再在備份節(jié)點(diǎn)中執(zhí)行如下命令讀取數(shù)據(jù):

db.collect1.find()

此時(shí),我們發(fā)現(xiàn)數(shù)據(jù)已經(jīng)備份成功了。
如果此時(shí)我們嘗試向備份節(jié)點(diǎn)中直接寫入文檔,會(huì)發(fā)現(xiàn)寫入失敗,這里需要注意備份節(jié)點(diǎn)中的數(shù)據(jù)都是備份來的,不可以直接寫入,想寫入,除非等它的身份轉(zhuǎn)為主節(jié)點(diǎn)才可以。

此時(shí),我們嘗試通過如下命令關(guān)閉主節(jié)點(diǎn):

use admin
db.shutdownServer()

然后查看兩個(gè)備份節(jié)點(diǎn)的db.isMaster(),發(fā)現(xiàn)有一個(gè)備份節(jié)點(diǎn)自動(dòng)上位成為了主節(jié)點(diǎn)。

最后如果想關(guān)閉副本集,可以回到第一個(gè)shell命令行中,輸入如下命令:

replicaSet.stopSet()
多臺(tái)服務(wù)器模擬

OK,以上操作是我們單臺(tái)服務(wù)器模擬搭建副本集,方便我們做實(shí)驗(yàn),在生產(chǎn)環(huán)境中,我們可能有多個(gè)服務(wù)器,多臺(tái)服務(wù)器又要如何搭建副本集呢?各位看官繼續(xù)向下看。

首先準(zhǔn)備好三臺(tái)裝好了MongoDB的服務(wù)器,地址分別如下:

192.168.248.128
192.168.248.135
192.168.248.136

修改每臺(tái)服務(wù)器的配置文件mongodb.conf,添加replSet=rs,表示副本集的名稱,修改后的配置文件內(nèi)容如下:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log
port=27017
fork=true
replSet=rs

修改完成之后,分別啟動(dòng)三臺(tái)服務(wù)器上的MongoDB,啟動(dòng)成功之后,連接上任意一臺(tái)的shell,連接成功之后,先定義配置文件,如下:

config={_id:"rs",members:[{_id:0,host:"192.168.248.128:27017"},{_id:1,host:"192.168.248.135:27017"},{_id:2,host:"192.168.248.136:27017"}]}

id后面跟著的是副本集的名稱,也就是我們在mongodb.conf中定義的名稱,后面三個(gè)是副本集的成員,定義好之后,再執(zhí)行如下命令初始化副本集:

rs.initiate(config)

初始化成功之后,我們就可以通過rs.status()來查看副本集的狀態(tài),也可以看到每個(gè)服務(wù)器的角色,部分日志內(nèi)容如下:

{
"members" : [
{
        "_id" : 0,
        "name" : "192.168.248.128:27017",
        "health" : 1,
        "state" : 1,
        "stateStr" : "PRIMARY",
},
{
        "_id" : 1,
        "name" : "192.168.248.135:27017",
        "health" : 1,
        "state" : 2,
        "stateStr" : "SECONDARY",
        "syncingTo" : "192.168.248.128:27017"
},
{
        "_id" : 2,
        "name" : "192.168.248.136:27017",
        "health" : 1,
        "state" : 2,
        "stateStr" : "SECONDARY",
        "syncingTo" : "192.168.248.128:27017",
}
]
}

我們可以看到每臺(tái)服務(wù)器的角色,有primary,也有secondary,secondary上還注明了從哪個(gè)服務(wù)器上同步數(shù)據(jù)。所有這些工作做好之后,我們就可以按照上文介紹的方式來測一下這里的副本集了,測試工作我就不再重復(fù)介紹了。

好了,MongoDB中副本集的搭建我們就先說到這里,小伙伴們有問題歡迎留言討論。

參考資料:

1.《MongoDB權(quán)威指南第2版》

更多資料請關(guān)注公眾號(hào):

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/19147.html

相關(guān)文章

  • 搭建 MongoDB分片(sharding) / 分區(qū) / 群環(huán)境

    摘要:搭建分片分區(qū)集群環(huán)境安裝三臺(tái)機(jī)器關(guān)閉防火墻主節(jié)點(diǎn)副節(jié)點(diǎn)仲裁仲裁主節(jié)點(diǎn)副節(jié)點(diǎn)副節(jié)點(diǎn)仲裁主節(jié)點(diǎn)端口分配下載并且安裝所有版本二進(jìn)制文件自行下載改名分別在每臺(tái)機(jī)器建立六個(gè)目錄,因?yàn)椴淮鎯?chǔ)數(shù)據(jù),只需要建立日志文件目錄即可。 搭建 MongoDB分片(sharding) / 分區(qū) / 集群環(huán)境 1. 安裝 MongoDB 三臺(tái)機(jī)器 關(guān)閉防火墻 systemctl stop firewalld.se...

    KunMinX 評論0 收藏0
  • MongoDB副本配置

    摘要:我們可以在添加節(jié)點(diǎn)時(shí)指定優(yōu)先級(jí),如下也可以為已有的節(jié)點(diǎn)設(shè)置優(yōu)先級(jí)好了,中副本集的配置我們就先說到這里,小伙伴們有問題歡迎留言討論。 上篇文章我們搭建了MongoDB副本集的環(huán)境,驗(yàn)證了數(shù)據(jù)已經(jīng)可以成功的復(fù)制,本文我們就來看看MongoDB副本集的其他操作。 本文是MongoDB系列的第十六篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安裝MongoDB 2.Mo...

    MartinHan 評論0 收藏0
  • 初識(shí)MongoDB分片

    摘要:復(fù)制一份,命名為,修改文件內(nèi)容如下注意改為我們第一步創(chuàng)建的目錄,端口號(hào)改為這個(gè)隨意,只要該端口沒被占用即可,表示這是一個(gè)配置服務(wù)器,另外由于我們的配置服務(wù)器要做成備份集,所以要設(shè)置。 分片是指將數(shù)據(jù)拆分,拆分后存放在不同的機(jī)器上的過程,以此來降低單個(gè)服務(wù)器的壓力,同時(shí)也解決單個(gè)服務(wù)器硬盤空間不足的問題,讓我們可以用廉價(jià)的機(jī)器實(shí)現(xiàn)高性能的數(shù)據(jù)架構(gòu)。有的小伙伴不理解分片和副本集的差異,一言...

    Nino 評論0 收藏0
  • mongo分片搭建

    摘要:集群搭建方式主從復(fù)制目前官方已不推薦使用副本集的副本集不同于以往的主從模式。分片是一種可以水平擴(kuò)展的模式在數(shù)據(jù)量很大時(shí)特給力實(shí)際大規(guī)模應(yīng)用一般會(huì)采用這種架構(gòu)去構(gòu)建。 mongodb集群搭建方式 1.master-slave 主從復(fù)制 目前官方已不推薦使用 2.Replica Sets 副本集 showImg(https://segmentfault.com/img/bVbsIpa?w=...

    BlackHole1 評論0 收藏0
  • MongoDB副本其他細(xì)節(jié)

    摘要:當(dāng)一個(gè)原本運(yùn)行正常的成員無法訪問到時(shí),該成員就處于的狀態(tài)。成員被從副本集中移除時(shí)就變成這個(gè)狀態(tài)。表示當(dāng)前服務(wù)器最后一次收到其他成員心跳的時(shí)間。表示同步的數(shù)據(jù)源。 副本集環(huán)境的搭建以及一些基本的操作我們都了解了,本文我們來看看這個(gè)數(shù)據(jù)復(fù)制到底是怎么實(shí)現(xiàn)的。 本文是MongoDB系列的第十七篇文章,了解前面的文章有助于更好的理解本文: 1.Linux上安裝MongoDB 2.Mon...

    Flink_China 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<