日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(1)解锁MongoDB replica set核心姿势

發(fā)布時間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (1)解锁MongoDB replica set核心姿势 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文倒騰目前大熱的MongoDB Replica Set集群,在倒騰的同時串講一些 MongoDB特性。

副本集Replica?Set是一個術語,定義具有多節(jié)點的數據庫集群,這些節(jié)點具有主從復制(master-slave replication) 且節(jié)點之間實現了自動故障轉移。

這樣的結構通常需要具有奇數個成員的成員(無論是否帶有Arbiter節(jié)點),以確保正確地選擇PRIMARY(主)數據庫。

選定的DB將處理所有傳入的寫操作,并將有關它們的信息存儲在其oplog,每個輔助(從屬)副本成員都可以訪問和復制oplog,以應用于它們的數據集。

前置

  • 為創(chuàng)建一個Replica?set,?至少需要三個MongoDB實例,請查看官網安裝指南.

  • 本文會始終使用sudo指令,一般情況請為MongoDB服務創(chuàng)建一個標準用戶 mongod

  • 配置網絡

    為達到數據一致性,每個實例節(jié)點需要與集群其他節(jié)點通信,以三實例數據傳輸為例:

    ① replica set每個成員都使用私有IP,部署在同一數據中心,這也是推薦方式。

    ② replica?set每個節(jié)點使用公網ip,節(jié)點部署在不同數據中心(在replication時有網絡延遲),這種方式一般用于強災備部署,如果采用這種方式,需要在主機之間配置SSL/TLS或通過vpn通信

    replica?set節(jié)點認證

    本節(jié)你會使用openssl創(chuàng)建一個用于在副本集成員之間認證的key文件,MongoDB推薦使用x.509證書加密連接。

    ① 產生key文件

    openssl?rand?-base64?756?>?mongo-keyfile

    ????將生成的key文件拷貝到復制集的每個成員


    ② 確保復制集成員都能訪問同一路徑的key文件:

    sudo?mkdir?/opt/mongo sudo?mv?~/mongo-keyfile?/opt/mongo sudo?chmod?400?/opt/mongo/mongo-keyfile

    ③ 默認安裝的MongoDB使用標準賬戶?mongod?,確保mongod對文件有所有權

    sudo?chown?mongod:mongod?/opt/mongo/mongo-keyfile

    創(chuàng)建Admin用戶

    登陸你打算設為Primary的MongoDB節(jié)點,進入admin數據庫,創(chuàng)建具有root特權的管理員用戶

    use?admin db.createUser({user:?"mongo-admin",?pwd:?"password",?roles:[{role:?"root",?db:?"admin"}]})

    配置MongoDB

    修改復制集每個成員的mongod.conf:

    net:port:?27017bindIp:?127.0.0.1,192.0.2.1? security:keyFile:?/opt/mongo/mongo-keyfile replication:???replSetName:?rs0

    指定key文件、replication set名稱;?

    重啟服務

    sudo?systemctl?restart?mongod

    啟動集群,添加節(jié)點

    使用之前創(chuàng)建的管理員賬戶登陸 Primary MongoDB服務節(jié)點:

    mongo?-u?mongo-admin?-p?--authenticationDatabase?admin

    ①?初始化集群添加節(jié)點

    rs.initiate() rs.add("mongo-repl-2") rs.add("mongo-repl-3")

    以上使用hostsname 代替節(jié)點ip地址,需要在節(jié)點/etc/hosts添加節(jié)點的 hosts映射條目。

    ② 使用rs.conf() 或 rs.status() 驗證集群配置和狀態(tài)

    倒騰Replica Set

    完成以上步驟,MongoDB 三實例Replica Set已經搭建好了。

    登陸Primary節(jié)點做一些常規(guī)倒騰 (順便撿漏一些你意想不到的姿勢)

    ① 輸入測試數據

    use?exampleDB for?(var?i?=?0;?i?<=?10;?i++)???db.exampleCollection.insert(?{?x?:?i?}?)

    將會隱式創(chuàng)建exampleDB 和 文檔集合exampleCollection。

    請注意,?默認創(chuàng)建的Collection是不封頂的。

    封頂capped collection:有固定大小的集合,支持高通量操作,這些操作根據插入順序插入和檢索文檔, 以循環(huán)緩沖區(qū)的形式工作(一旦集合達到分配空間,會通過override舊文檔來騰挪出新的空間)。

    ② 觀察Secondary節(jié)點是否已經同步到插入的數據

    ?使用創(chuàng)建的管理員賬戶登陸 Secondary節(jié)點,直接查詢會報:

    因為默認建立的Replica?set讀寫均發(fā)生均在Primary節(jié)點(Secondary節(jié)點的作用是:冗余備份、故障轉移);

    不過MongoDB replica set支持在客戶端設置read preference(讀操作首選項),大部分Driver均支持在連接字符串中指定read preference讀操作首選項,這個設置可實現真正意義的master-slave讀寫分離。

    對應到shell會話,我們需要為本次Secondary會話 開啟可讀

    db.getMongo().setSlaveOk()

    使用shell命令的讀取首選項

    回過頭來

    實操本文,你已經可以完整搭建MongoDB Replica Set,大致掌握了副本集的核心特性:

    主節(jié)點讀寫、輔助節(jié)點冗余備份;

    支持對輔助節(jié)點開啟讀操作。

    后面我們聊一聊 副本集心跳?;睢惒綇椭啤⒆詣庸收限D移相關姿勢。

    ?

    總結

    以上是生活随笔為你收集整理的(1)解锁MongoDB replica set核心姿势的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。