国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MongoDB搭建復(fù)制集集群(Docker版)

這篇具有很好參考價值的文章主要介紹了MongoDB搭建復(fù)制集集群(Docker版)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

復(fù)制集注意事項

關(guān)于復(fù)制集:

  • 復(fù)制集為 MongoDB 提供了數(shù)據(jù)可靠性,當(dāng)某個節(jié)點掛掉,可以重新選舉出主節(jié)點;
  • 復(fù)制集為 MongoDB 提供了數(shù)據(jù)安全性,當(dāng)節(jié)點宕機后,備份數(shù)據(jù)保證數(shù)據(jù)不丟失;
  • 復(fù)制集為 MOngoDB 提供了高性能,可通過配置主從讀寫分離提高服務(wù)性能;

關(guān)于硬件:

  • 因為正常的復(fù)制集節(jié)點都有可能成為主節(jié)點,它們的地位是一樣的,因此硬件配置上必須一致;
  • 為了保證節(jié)點不會同時宕機,各節(jié)點使用的硬件必須具有獨立性;
  • 此處用的 Docker 在同一個虛擬機上模擬三個節(jié)點;

關(guān)于軟件:

  • 復(fù)制集各節(jié)點軟件版本必須一致,以避免出現(xiàn)不可預(yù)知的問題;
  • 增加節(jié)點不會增加系統(tǒng)寫性能;
  • 此處用的 MongoDB 6.0.5 版本;

環(huán)境準備

  • Docker 安裝 MongoDB 并配置好環(huán)境變量;
  • 確保有 10GB 以上的硬盤空間;
  • 默認已安裝 Docker,沒安裝的話請參考我的 Docker 教程;
  • 宿主機器為 CentOS7;

一主兩從架構(gòu)圖:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

安裝步驟

(1)準備配置文件
復(fù)制集的每個 mongod 進程應(yīng)該位于不同的服務(wù)器。我們現(xiàn)在在一臺機器上運行 3 個進程,因此要為它們各自配置:

  • 不同的端口(28017/28018/28019)
  • 不同的數(shù)據(jù)目錄
mkdir -p /data/db{1,2,3}

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

  • 不同日志文件路徑(例如:/data/db1/logs)
mkdir -p /data/db{1,2,3}/logs

創(chuàng)建配置文件/data/db1/mongod.conf,內(nèi)容如下:

systemLog:
  destination: file
  path: /data/logs/mongod.log # log path
  logAppend: true
storage:   
  dbPath: /data/db # data directory      
net:
  bindIp: 0.0.0.0
  port: 27017 # port
replication:
  replSetName: rs0 # 復(fù)制集名稱
# processManagement: # 設(shè)置了該項會導(dǎo)致docker exec -it mongodb1 bash 進入容器后馬上自動退出
#   fork: true

將該配置文件復(fù)制都 db2、db3 對應(yīng)的目錄下,注意其中配置的是容器中的地址,而不是宿主機對應(yīng)的地址,且必須是 yaml 格式。
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

(2)啟動 docker
啟動第 1 個 mongod:

docker run --name mongodb1 -d --restart=always -v /data/db1:/data/db -v /data/db1/logs:/data/logs -v /data/db1/mongod.conf:/data/conf/mongod.conf -p 28017:27017 mongo:6.0.5 --config /data/conf/mongod.conf

–name:指定容器名稱
-d:后臺運行
–restart:設(shè)置容器的重啟策略,always 表示重啟宿主機自動運行 docker
-v:將宿主機文件掛載到容器中,注意格式為:“宿主機路徑 : 容器路徑”
-p:綁定宿主機和容器的端口,注意格式為:“宿主機端口 : 容器端口”
mongo:6.0.5:指定鏡像名和版本號
–config:指定啟動的配置文件,容器中的路徑

啟動第 2 個 mongod:

docker run --name mongodb2 -d --restart=always -v /data/db2:/data/db -v /data/db2/logs:/data/logs -v /data/db2/mongod.conf:/data/conf/mongod.conf -p 28018:27017 mongo:6.0.5 --config /data/conf/mongod.conf

啟動第 3 個 mongod:

docker run --name mongodb3 -d --restart=always -v /data/db3:/data/db -v /data/db3/logs:/data/logs -v /data/db3/mongod.conf:/data/conf/mongod.conf -p 28019:27017 mongo:6.0.5 --config /data/conf/mongod.conf

查看 docker 進程狀態(tài)及網(wǎng)絡(luò)端口:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
注意 docker 啟動,宿主機的防火墻 firewalld 必須開啟,否則會報如下錯誤:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
通過客戶端工具訪問 mongodb:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
進入 docker 容器操作 mongodb:

# 宿主機進入容器
docker exec -it mongodb1 bash
# 進入容器mongodb的命令行模式
mongosh
# 查看mongodb數(shù)據(jù)庫
show dbs

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
至此,三個 mongod 節(jié)點安裝完成。

配置復(fù)制集

復(fù)制集通過 mongosh 的 rs.initiate() 進行初始化,初始化后各個成員間開始發(fā)送心跳消息,并發(fā)起 Priamry 選舉操作,獲得大多數(shù)成員投票支持的節(jié)點,會成為 Primary,其余節(jié)點成為 Secondary。

進入 mongdb1 節(jié)點后執(zhí)行 mongosh 命令后:

# mongosh --port 28017 
# 初始化復(fù)制集
> rs.initiate({
    _id: "rs0",
    members: [{
        _id: 0,
        host: "192.168.10.101:28017"
    },{
        _id: 1,
        host: "192.168.10.101:28018"
    },{
        _id: 2,
        host: "192.168.10.101:28019"
    }]
})

提示{ok:1}表示初始化成功:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

驗證主從節(jié)點讀寫操作:

  • MongoDB 主節(jié)點進行寫入
# mongosh --port 28017
rs0 [direct: primary] test> db.user.insertMany([{name:"firechou"},{name:"monkey"}])

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

  • 切換到從節(jié)點寫入,拋出異常 MongoBulkWriteError: not primary
# mongosh --port 28018  
rs0 [direct: secondary] test> db.user.insertMany([{name:"firechou"},{name:"monkey"}])

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

  • MongoDB 從節(jié)點進行讀
# mongosh --port 28018
# 指定從節(jié)點可讀
rs0:SECONDARY> rs.secondaryOk() # 需要執(zhí)行該命令,否則會報錯
rs0:SECONDARY> db.user.find()

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
或者執(zhí)行如下命令開啟從節(jié)點讀:

db.getMongo().setReadPref("secondary")

MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

  • 模擬重新選舉 Master

停掉 mongodb1 服務(wù):
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
查看 mongodb2 服務(wù)已被選舉成了 Primary 節(jié)點:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
啟動 mongodb1 后再次執(zhí)行寫入操作,提示非主節(jié)點不能寫入:
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能

復(fù)制集狀態(tài)查詢

  • 查看復(fù)制集整體狀態(tài):
rs.status()

可查看各成員當(dāng)前狀態(tài),包括是否健康,是否在全量同步,心跳信息,增量同步信息,選舉信息,上一次的心跳時間等。
MongoDB搭建復(fù)制集集群(Docker版),# MongoDB,mongodb,docker,復(fù)制集,集群,高可用,高性能
說明:

members:數(shù)組,一列體現(xiàn)了所有復(fù)制集成員的狀態(tài),主要如下:
health:成員是否健康,通過心跳進行檢測。
state/stateStr:成員的狀態(tài),PRIMARY 表示主節(jié)點,而 SECONDARY 則表示備節(jié)點,如果節(jié)點出現(xiàn)故障,則可能出現(xiàn)一些其他的狀態(tài),例如 RECOVERY。
uptime:成員的啟動時間。
optime/optimeDate:成員同步最后一條 oplog 的時間。
optimeDurable/optimeDurableDate:成員同步最后一條 oplog 持久化的時間。
pingMs:成員與當(dāng)前節(jié)點的 ping 時延。
syncingTo:成員的同步來源。

  • 查看當(dāng)前節(jié)點角色:
db.isMaster()

除了當(dāng)前節(jié)點角色信息,是一個更精簡化的信息,也返回整個復(fù)制集的成員列表,真正的 Primary 是誰,協(xié)議相關(guān)的配置信息等,Driver 在首次連接復(fù)制集時會發(fā)送該命令。文章來源地址http://www.zghlxwxcb.cn/news/detail-814090.html

Mongos 復(fù)制集常用命令

**命令 ** 描述
rs.add() 為復(fù)制集新增節(jié)點
rs.addArb() 為復(fù)制集新增一個 arbiter
rs.conf() 返回復(fù)制集配置信息
rs.freeze() 防止當(dāng)前節(jié)點在一段時間內(nèi)選舉成為主節(jié)點
rs.help() 返回 replica set 的命令幫助
rs.initiate() 初始化一個新的復(fù)制集
rs.printReplicationInfo() 以主節(jié)點的視角返回復(fù)制的狀態(tài)報告
rs.printSecondaryReplicationInfo() 以從節(jié)點的視角返回復(fù)制狀態(tài)報告
rs.reconfig() 通過重新應(yīng)用復(fù)制集配置來為復(fù)制集更新配置
rs.remove() 從復(fù)制集中移除一個節(jié)點
rs.secondaryOk() 為當(dāng)前的連接設(shè)置從節(jié)點可讀
db.getMongo().setReadPref(“secondary”) 為當(dāng)前的連接設(shè)置從節(jié)點可讀,推薦使用
rs.status() 返回復(fù)制集狀態(tài)信息
rs.stepDown() 讓當(dāng)前的 primary 變?yōu)閺墓?jié)點并觸發(fā)
electionrs.syncFrom() 設(shè)置復(fù)制集節(jié)點從哪個節(jié)點處同步數(shù)據(jù),將會覆蓋默認選取邏輯

到了這里,關(guān)于MongoDB搭建復(fù)制集集群(Docker版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 輕松掌握組件啟動之MongoDB(上):高可用復(fù)制集架構(gòu)環(huán)境搭建

    輕松掌握組件啟動之MongoDB(上):高可用復(fù)制集架構(gòu)環(huán)境搭建

    在生產(chǎn)環(huán)境中,強烈不建議使用單機版的MongoDB服務(wù)器。原因如下: 單機版的MongoDB無法保證系統(tǒng)的可靠性。一旦進程發(fā)生故障或是服務(wù)器宕機,業(yè)務(wù)將直接不可用。此外,一旦服務(wù)器上的磁盤損壞,數(shù)據(jù)會直接丟失,而此時并沒有任何副本可用。 為了確保數(shù)據(jù)的高可用性和冗

    2024年02月08日
    瀏覽(21)
  • 輕松掌握組件啟動之MongoDB(番外篇):高可用復(fù)制集架構(gòu)環(huán)境搭建-mtools

    輕松掌握組件啟動之MongoDB(番外篇):高可用復(fù)制集架構(gòu)環(huán)境搭建-mtools

    在前兩章節(jié)中,我們詳細講解了如何手動配置啟動MongoDB。然而,現(xiàn)在有許多不同的工具可以幫助我們更方便地啟動和創(chuàng)建MongoDB數(shù)據(jù)庫。因此,今天我將介紹一個名為mtools的開源項目,它可以幫助我們更輕松地啟動MongoDB。 官方文檔地址:mtools mtools是一個基于Python實現(xiàn)的Mong

    2024年02月08日
    瀏覽(23)
  • 基于 k8s+docker 環(huán)境構(gòu)建一個高可用、高性能的 web 集群。

    基于 k8s+docker 環(huán)境構(gòu)建一個高可用、高性能的 web 集群。

    目錄 項目架構(gòu)圖 項目描述 項目環(huán)境 環(huán)境準備 IP地址規(guī)劃 關(guān)閉selinux和firewall 配置靜態(tài)ip地址 修改主機名 升級系統(tǒng)(可做可不做) 添加hosts解析 項目步驟 一.使用ProcessOn設(shè)計了整個集群的架構(gòu),規(guī)劃好服務(wù)器的IP地址,使用kubeadm安裝k8s單master的集群環(huán)境(1個master+2個node節(jié)點

    2024年02月07日
    瀏覽(121)
  • 使用docker搭建mongodb

    使用 Docker CLI 搭建 MongoDB 1. 運行 MongoDB 容器 首先,我們使用以下命令來啟動一個 MongoDB 容器: 參數(shù)解釋: -itd : 這三個參數(shù)通常一起使用, i 表示交互式模式, t 分配一個偽終端, d 表示后臺運行。 --name mongodb_comm : 為容器指定一個名字 mongodb_comm ,方便后續(xù)的操作和管理。

    2024年03月18日
    瀏覽(18)
  • 【保姆級教程】:docker搭建MongoDB三節(jié)點副本集

    【保姆級教程】:docker搭建MongoDB三節(jié)點副本集

    歡迎關(guān)注公眾號:天天說編程 你的關(guān)注是我最大的動力! 容器可以理解為一個進程,鏡像是把環(huán)境,組件等都配置好,運行成容器的,容器里面運行服務(wù),也可以說是一個進程。鏡像是模板,鏡像是實例。 一個鏡像可以創(chuàng)建多個實例。也就是多個容器,容器之間相互獨立。

    2024年02月03日
    瀏覽(24)
  • MongoDB復(fù)制集集群部署及管理

    簡述: MongoDB是由C++語言編寫一個基于 分布式 文件存儲的開源NoSQL數(shù)據(jù)庫系統(tǒng)。在高負載的情況下,可添加更多的節(jié)點(實例),以保證服務(wù)性能。在許多場景下用于代替?zhèn)鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫或鍵/值存儲方式。旨在為Web應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。 MongoDB提供

    2024年02月12日
    瀏覽(21)
  • mongodb復(fù)制集集群部署、測試、選舉原理

    目錄 一、基本概念 二、 mongodb安裝部署 1、關(guān)閉防火墻和selinux 2、指定一個進程同一時間最多可開啟的文件數(shù) 3、用戶最多可開啟的進程數(shù)目 4.安裝版本下載地址,并優(yōu)化命令 5、創(chuàng)建數(shù)據(jù)目錄,日志文件及目錄并創(chuàng)建相應(yīng)配置文件 6、啟動MongoDB數(shù)據(jù)庫,-f指定配置文件 7、設(shè)

    2024年02月12日
    瀏覽(18)
  • 使用Docker搭建開發(fā)環(huán)境:MySQL、Redis、MongoDB和Selenium Grid

    Docker 是一個開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個可移植的容器中,然后發(fā)布到任何支持Docker的平臺上。在本篇博客中,我們將詳細介紹如何用Docker安裝MySQL、Redis、MongoDB和Selenium Grid,并給出相應(yīng)的代碼案例。 在開始之前,確保您的系統(tǒng)上安

    2024年02月19日
    瀏覽(20)
  • 如何在Ubuntu系統(tǒng)使用Docker搭建MongoDB結(jié)合內(nèi)網(wǎng)穿透實現(xiàn)公網(wǎng)連接

    如何在Ubuntu系統(tǒng)使用Docker搭建MongoDB結(jié)合內(nèi)網(wǎng)穿透實現(xiàn)公網(wǎng)連接

    本文主要介紹如何在Linux Ubuntu系統(tǒng)使用Docker快速部署MongoDB,并結(jié)合cpolar內(nèi)網(wǎng)穿透工具實現(xiàn)公網(wǎng)遠程訪問本地數(shù)據(jù)庫。 MongoDB服務(wù)端可以運行在Linux、Windows、MacOS平臺,可以存儲比較復(fù)雜的數(shù)據(jù)類型,支持的查詢語言非常強大,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分

    2024年03月26日
    瀏覽(27)
  • 在k8s 中部署有狀態(tài)服務(wù)MongoDB高可用集群詳解(附帶鏡像)

    在k8s 中部署有狀態(tài)服務(wù)MongoDB高可用集群詳解(附帶鏡像)

    ??明明跟你說過:個人主頁 ??個人專欄:《Kubernetes航線圖:從船長到K8s掌舵者》??? ??行路有良友,便是天堂?? 目錄 一、前言 ?1、k8s簡介 2、MongoDB介紹 3、為什么要使用MongoDB? 4、Mongodb高可用方案? 二、環(huán)境準備 1、k8s集群搭建 2、MongoDB鏡像準備 3、NFS存儲準備 4、PV準

    2024年04月16日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包