最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

藍(lán)鯨7.0-CMDB--MongoDB 備份與同步

2023-08-24 11:11 作者:騰訊藍(lán)鯨智云  | 我要投稿

本文來(lái)自騰訊藍(lán)鯨智云社區(qū)用戶(hù):fadwalk

前言

藍(lán)鯨的配置平臺(tái)(CMDB)底層使用的是 Mongodb 作為數(shù)據(jù)存儲(chǔ),其優(yōu)點(diǎn)不用多說(shuō),相信使用過(guò)的小伙伴應(yīng)該都會(huì)覺(jué)得設(shè)計(jì)很靈活方便。

但是藍(lán)鯨的容器版本的 mongo 部署的是單點(diǎn)的版本,這個(gè)在測(cè)試環(huán)境的話單節(jié)點(diǎn)問(wèn)題不大。

但是如果后續(xù)在生產(chǎn)環(huán)境的話,單個(gè)節(jié)點(diǎn)的 mongodb 還是不太保險(xiǎn),存在單節(jié)點(diǎn)故障的問(wèn)題。

因此我們考量到生產(chǎn)數(shù)據(jù)的安全容災(zāi)問(wèn)題,更希望使用mongo集群,并且數(shù)據(jù)除了有冷備,還要有跨中心的熱備功能。

有了這些想法和需求后,接下來(lái)我們就開(kāi)干。

MongoDB 高可用

藍(lán)鯨的mongodb 使用的是bitnami 社區(qū)打包的helm chart 版本,之前接觸比較少的小伙伴可以了解下。(bitnami.com)[https://bitnami.com/]

Bitnami是一個(gè)開(kāi)源的軟件打包和部署工具,旨在簡(jiǎn)化應(yīng)用程序的安裝和管理過(guò)程。它提供了預(yù)配置的軟件堆棧、虛擬機(jī)和容器映像,包括許多流行的開(kāi)源應(yīng)用程序和開(kāi)發(fā)環(huán)境,如WordPress、Drupal、Joomla、LAMP(Linux、Apache、MySQL、PHP)等等。

其實(shí)在部署的時(shí)候,你查看 yaml.gotmpl 會(huì)發(fā)現(xiàn) helmfile 文件里面,藍(lán)鯨的每個(gè)中間件的 yaml 模板文件都預(yù)留了自定義的參數(shù)文件路徑,用戶(hù)可以進(jìn)行自定義配置。

/environments/default/mongodb-custom-values.yaml.gotmpl?這個(gè)路徑是默認(rèn)沒(méi)有的,用戶(hù)如果需要有自定義的配置需要手動(dòng)創(chuàng)建

創(chuàng)建之后,你可能會(huì)問(wèn)我應(yīng)該傳什么參數(shù),在配置文件里面寫(xiě)什么才能開(kāi)啟MongoDB的復(fù)制集群,別急接下來(lái)我們就介紹如何去查找參數(shù)配置。當(dāng)我們從藍(lán)鯨下載的安裝文件包后,在chart目錄下面的很多都是tar.gz 文件包,藍(lán)鯨安裝的時(shí)候,都會(huì)去引用這些都是chart包。

我們可以將 MongoDB 的 chart 包解壓,解壓之后里面有一個(gè)values 的文件,這個(gè)文件就是chart包啟動(dòng)的參數(shù)配置,我們可以打開(kāi)看一下里面的參數(shù)是怎么寫(xiě)的,
可以看到有 architecture: standalone 這個(gè)字段,默認(rèn)是單點(diǎn)的,還有一種是復(fù)制集的模式(這種事有容災(zāi)的)。

知道了參數(shù)的配置,我們并非要在這里直接去改 values 文件里面的值,容易改亂,上面我們不是介紹了留的那個(gè)自定義配置的鉤子嘛,我們?cè)谀抢锩嫒ヌ砑印?br>

下面的參數(shù)是副本集的配置

vim ./environments/default/mongodb-custom-values.yaml.gotmpl architecture: replicaset replicaCount: 2 ?# 根據(jù)你的需求來(lái)設(shè)置 nodeSelector: ?app: mongodb # 這里 將MongoDB的pod調(diào)度到 app:mongodb 標(biāo)簽的節(jié)點(diǎn) affinity: {} # 親和性,根據(jù)需要設(shè)置 tls: # 客戶(hù)端的tls 證書(shū),根據(jù)需要進(jìn)行配置。demo 參考上面values 里面的解釋 ?xxx

在對(duì)mongodb單個(gè)組件進(jìn)行操作的時(shí)候,建議創(chuàng)建一個(gè)只有mongodb的模板文件。

bases: ?- env.yaml --- bases: ?- defaults.yaml --- commonLabels: ?tier: storage releases: ?- name: bk-mongodb ? ?namespace: {{ .Values.namespace }} ? ?chart: ./charts/mongodb-{{ .Values.version.mongodb }}.tgz ? ?missingFileHandler: Warn ? ?version: {{ .Values.version.mongodb }} ? ?condition: bitnamiMongodb.enabled ? ?values: ? ?- ./environments/default/mongodb-values.yaml.gotmpl ? ?- ./environments/default/mongodb-custom-values.yaml.gotmpl

helmfile -f mongo.yaml.gotmpl sync

這樣就只會(huì)對(duì)mongodb這個(gè)組件進(jìn)行部署。

當(dāng)然如果你有老的數(shù)據(jù)的話,升級(jí)前最好對(duì)數(shù)據(jù)做一個(gè)備份,防止升級(jí)為集群模式后數(shù)據(jù)異常。

查看部署后的 Mongodb的 pod,發(fā)現(xiàn)不再是單節(jié)點(diǎn)的

MongoDB 數(shù)據(jù)同步

關(guān)于mongodb 的數(shù)據(jù)同步下面提供一下的幾種思路,大家可以結(jié)合自己的業(yè)務(wù),選擇合適的去實(shí)現(xiàn)落地。

集群內(nèi)數(shù)據(jù)同步

這種適合同集群不同節(jié)點(diǎn),或者網(wǎng)絡(luò)延遲不大的同城數(shù)據(jù)中心。

在 MongoDB 中,可以通過(guò)復(fù)制集群(Replica Set)來(lái)實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)同步和冗余備份。復(fù)制集群包含多個(gè) MongoDB 實(shí)例(節(jié)點(diǎn)),其中一個(gè)節(jié)點(diǎn)被選舉為主節(jié)點(diǎn)(Primary),其余節(jié)點(diǎn)則為次要節(jié)點(diǎn)(Secondary)。數(shù)據(jù)會(huì)自動(dòng)在主節(jié)點(diǎn)和次要節(jié)點(diǎn)之間進(jìn)行同步。

要設(shè)置 MongoDB 復(fù)制集群并實(shí)現(xiàn)數(shù)據(jù)同步,請(qǐng)按照以下步驟進(jìn)行操作:

部署 MongoDB 實(shí)例:在每個(gè)節(jié)點(diǎn)上安裝和配置 MongoDB。確保每個(gè)節(jié)點(diǎn)的配置文件中包含相同的復(fù)制集群名稱(chēng)(replica set name)。

初始化主節(jié)點(diǎn):選擇其中一個(gè)節(jié)點(diǎn)作為初始主節(jié)點(diǎn)。在該節(jié)點(diǎn)上啟動(dòng) MongoDB,并使用 rs.initiate() 命令初始化復(fù)制集群。

rs.initiate() 添加次要節(jié)點(diǎn):連接到主節(jié)點(diǎn)的 MongoDB 實(shí)例,并使用 rs.add() 命令逐個(gè)添加次要節(jié)點(diǎn)。 rs.add("<secondary-node-host>:<port>") 例如: rs.add("secondary1.example.com:27017") rs.add("secondary2.example.com:27017") 這將將次要節(jié)點(diǎn)添加到復(fù)制集群中,并開(kāi)始進(jìn)行數(shù)據(jù)同步。 檢查復(fù)制集群狀態(tài):可以使用 rs.status() 命令來(lái)查看復(fù)制集群的狀態(tài),確認(rèn)節(jié)點(diǎn)的角色和數(shù)據(jù)同步情況。 rs.status() 在輸出中,你將看到有關(guān)每個(gè)節(jié)點(diǎn)的詳細(xì)信息,包括節(jié)點(diǎn)的角色、健康狀況和復(fù)制進(jìn)度等。

數(shù)據(jù)備份(冷備)

在 MongoDB 中,可以使用 mongodump 工具進(jìn)行備份數(shù)據(jù)。mongodump 工具可以將 MongoDB 數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出為 BSON 文件(二進(jìn)制 JSON),以便后續(xù)進(jìn)行恢復(fù)或遷移。

以下是使用 mongodump 進(jìn)行數(shù)據(jù)備份的基本步驟:

打開(kāi)命令行終端或命令提示符窗口。
運(yùn)行 mongodump 命令,并指定要備份的 MongoDB 實(shí)例的連接信息和其他選項(xiàng)。

mongodump --host <hostname> --port <port> --username <username> --password <password> --authenticationDatabase <authDatabase> --db <database> --out <outputDirectory> <hostname>:MongoDB 實(shí)例的主機(jī)名或 IP 地址。 <port>:MongoDB 實(shí)例的端口號(hào),默認(rèn)為 27017。 <username>:連接 MongoDB 實(shí)例所需的用戶(hù)名。 <password>:連接 MongoDB 實(shí)例所需的密碼。 <authDatabase>:用于進(jìn)行身份驗(yàn)證的數(shù)據(jù)庫(kù)名稱(chēng)。 <database>:要備份的數(shù)據(jù)庫(kù)名稱(chēng)。 <outputDirectory>:指定備份文件的輸出目錄。

例如,如果要備份名為 “mydatabase” 的數(shù)據(jù)庫(kù),并將備份文件保存在當(dāng)前目錄下的 “backup” 文件夾中,可以運(yùn)行以下命令:

mongodump --host localhost --port 27017 --username myuser --password mypassword --authenticationDatabase admin --db mydatabase --out ./backup

mongodump 命令將開(kāi)始備份過(guò)程,并將數(shù)據(jù)導(dǎo)出到指定的輸出目錄中。備份過(guò)程可能需要一些時(shí)間,具體取決于數(shù)據(jù)庫(kù)的大小和網(wǎng)絡(luò)連接的速度。

備份完成后,你將在指定的輸出目錄中找到備份文件。備份文件以數(shù)據(jù)庫(kù)名稱(chēng)命名,包含數(shù)據(jù)和索引的 BSON 文件。

這種方式是冷備,可以在每天晚上寫(xiě)個(gè)crontab 定時(shí)執(zhí)行。

跨集群復(fù)制集同步(熱同步)

如果你的業(yè)務(wù)建設(shè)的DR容災(zāi)機(jī)房,希望將生產(chǎn)的藍(lán)鯨的配置平臺(tái)熱同步到備的數(shù)據(jù)集群(藍(lán)鯨容災(zāi)集群的配置平臺(tái)),對(duì)于跨數(shù)據(jù)中心的異地不建議使用第一種方式那種來(lái)做數(shù)據(jù)同步,防止其他節(jié)點(diǎn)同步將主數(shù)據(jù)中心的節(jié)點(diǎn)拖垮。

而且使用第一種的方式會(huì)存在跨網(wǎng)絡(luò)集群,mongodb的節(jié)點(diǎn)添加困難,當(dāng)然有的小伙伴可能會(huì)使用hostnetwork 將mongodb的端口映射到主機(jī)節(jié)點(diǎn)(這種方式我試過(guò),主數(shù)據(jù)中心的主mongodb添加后無(wú)法獲取狀態(tài)),而且這種相當(dāng)于是跨數(shù)據(jù)中心的mongodb集群,對(duì)網(wǎng)絡(luò)延遲要求會(huì)比較的高。

其實(shí)理解mongodb的原理的小伙伴應(yīng)該都知道m(xù)ongodb的主從復(fù)制其實(shí)是通過(guò)oplog來(lái)實(shí)現(xiàn)的(類(lèi)似mysql的binlog),如果我們借助oplog將主數(shù)據(jù)中心的mongodb的oplog 寫(xiě)到容災(zāi)數(shù)據(jù)中心的mongodb集群節(jié)點(diǎn),那么就可以實(shí)現(xiàn)主備數(shù)據(jù)中心的mongodb的數(shù)據(jù)同步。你可能會(huì)說(shuō)我不會(huì)去同步oplog,有沒(méi)有現(xiàn)成的工具,當(dāng)然有的哈。
這里介紹一下MongoShake這款開(kāi)源工具(阿里云開(kāi)源的,感謝開(kāi)源社區(qū))。

簡(jiǎn)介:MongoShake是一個(gè)用于MongoDB數(shù)據(jù)復(fù)制和同步的開(kāi)源工具。它提供了高性能和可靠的數(shù)據(jù)遷移、備份和同步解決方案。

下面是一些關(guān)鍵特點(diǎn)和用途:

數(shù)據(jù)復(fù)制和同步:MongoShake可以在不同的MongoDB實(shí)例之間進(jìn)行數(shù)據(jù)復(fù)制和同步。它支持單向復(fù)制和雙向同步,可以確保源和目標(biāo)之間的數(shù)據(jù)一致性。

高性能和可靠性:MongoShake使用多線程和批量操作來(lái)提高數(shù)據(jù)傳輸?shù)男阅?。它還具有斷點(diǎn)續(xù)傳和故障恢復(fù)功能,確保在網(wǎng)絡(luò)中斷或其他故障情況下能夠恢復(fù)傳輸過(guò)程。

數(shù)據(jù)遷移:MongoShake可以幫助你將數(shù)據(jù)從一個(gè)MongoDB集群或復(fù)制集合遷移到另一個(gè)集群或復(fù)制集合。它提供了簡(jiǎn)單的命令行工具和配置文件,可以輕松配置和管理數(shù)據(jù)遷移過(guò)程。

數(shù)據(jù)備份:MongoShake可以用作備份工具,將MongoDB數(shù)據(jù)庫(kù)的數(shù)據(jù)備份到其他位置或存儲(chǔ)介質(zhì)。你可以定期運(yùn)行備份任務(wù),并將備份數(shù)據(jù)用于災(zāi)難恢復(fù)或數(shù)據(jù)恢復(fù)。

實(shí)時(shí)同步:MongoShake支持實(shí)時(shí)同步,可以將源數(shù)據(jù)庫(kù)的更改實(shí)時(shí)地同步到目標(biāo)數(shù)據(jù)庫(kù)。這對(duì)于構(gòu)建高可用性系統(tǒng)和數(shù)據(jù)實(shí)時(shí)分析非常有用。

靈活性和可配置性:MongoShake提供了豐富的配置選項(xiàng),允許你根據(jù)需求定制復(fù)制和同步過(guò)程。你可以配置過(guò)濾規(guī)則、映射規(guī)則、轉(zhuǎn)換規(guī)則等,以滿(mǎn)足特定的數(shù)據(jù)遷移或同步需求。

這篇文章有介紹如何使用mongoshake進(jìn)行mongodb的數(shù)據(jù)同步?MongoShake——基于MongoDB的跨數(shù)據(jù)中心的數(shù)據(jù)復(fù)制平臺(tái)

下面是mongoshake的github地址:

MongoShake

第一次使用,如何進(jìn)行配置?

感興趣的小伙伴可以點(diǎn)擊前往查看。

這里就不過(guò)多篇幅介紹mongshake數(shù)據(jù)同步的細(xì)節(jié),相信大家查看文檔就能快速上手。

小結(jié)

本次主要分享了如何開(kāi)啟藍(lán)鯨中間件中mongodb的集群模式,以及mongodb數(shù)據(jù)備份容災(zāi)的三種方式。

本次分享就到這里啦!下期將介紹藍(lán)鯨中間件–kafka/zookeeper 的高可用配置以及藍(lán)鯨監(jiān)控平臺(tái)中的grafana圖斷點(diǎn)優(yōu)化思路。

如果你夠機(jī)智的話,應(yīng)該通過(guò)我上面的介紹已經(jīng)想到了如何去實(shí)現(xiàn)主機(jī)藍(lán)鯨集群的kafka的集群優(yōu)化哈哈哈。


藍(lán)鯨7.0-CMDB--MongoDB 備份與同步的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
盘锦市| 丽水市| 温宿县| 竹山县| 资源县| 行唐县| 兴仁县| 河池市| 清河县| 威海市| 大姚县| 佛学| 靖宇县| 慈利县| 怀仁县| 甘德县| 台南市| 芒康县| 儋州市| 南阳市| 晋江市| 无锡市| 即墨市| 淮北市| 大石桥市| 郁南县| 南阳市| 晋州市| 灯塔市| 于都县| 夹江县| 大渡口区| 同心县| 铜鼓县| 东阳市| 平陆县| 龙门县| 化隆| 施甸县| 潞城市| 应城市|