標籤:term god 輪詢 客戶 root 應用 alt 集合 replicat
MongoDB 複製集概述
- 複製集是額外的資料副本,是跨多個伺服器同步資料的過程,複製集提供了沉餘添加了資料可用性,通過個複製集可以對硬體故障中斷的服務進行恢複復制集的優勢如下:
- 讓資料更安全。
- 高資料可用性(24*7)
- 災難恢複
- 無停機維護(如備份、索引重建、容錯移轉)
- 讀縮放(額外的副本讀取)
- 複本集對應用程式是透明的。複製集工作原理
- MongoDB 的複製集至少需要兩個節點,其中一個主節點(primary),負責處理用戶端的請求,其餘的都是從節點(secondary),負責複製主節點上的資料。
- MongoDB 各節點常見的搭配方式為:一主一從或者一主多從。主節點記錄其所有操作到oplog中,從節點定期輪詢主節點擷取這些操作,然後對自己的資料副本執行這些操作,從而保證從節點的資料與主節點譯者。複製集特點如下:
- N個節點群階
- 任何節點客作為主節點
- 所有寫入操作都在主節點
- 自動容錯移轉
- 自動回復開始部署
建立多執行個體 //建立多執行個體關閉防火牆 setenforce //一些阻擋項目mkdir -p /data/mongodb/mongodb{2,3,4} //建立資料目錄mkdir logs //到/data/mongodb/建立記錄檔目錄touch logs/mongodb{2,3,4}.log //建立記錄檔cd logs/到目錄下chmod 777 *.log //賦予許可權//建立多執行個體設定檔,並開啟服務mongod -f /etc/mongod.conf --shutdown //修改完主設定檔並且進行關閉在開啟mongod -f /etc/mongod.conf //挨個開啟所有服務進入預設的連接埠 開啟複製集cp -p /etc/mongod.conf /etc/mongod2.conf //地二個執行個體設定檔vim /etc/mongod2.conf path: /data/mongodb/logs/mongod2.log //系統日誌存放路徑 dbPath: /data/mongodb/mongo //資料存放日誌 port: 27018 //端連接埠mkdir -p /data/mongodb/ //為其建立系統日誌和資料存放日誌沒有目錄cd /data/mongodb/ mkdir mongo touch mongod2.log //為其建立系統記錄檔chmod 777 mongod2.log //並且給與許可權mongod -f /etc/mongod2.conf //開啟多執行個體服務mongo --port 27018 //進入mongodb 27018netstat -ntap //產看進程cfg={"_id":"abc","members":[{"_id":0,"host":"192.168.10.5:27017","priority":100},{"_id":1,"host":"192.168.10.5:27018","priority":100},{"_id":2,"host":"192.168.10.5:27019","priority":0},{"_id":3,"host":"192.168.10.5:27020","arbiterOnly":true}]} //注意IP優先順序來判斷priority":100 //高的做為表准節點priority":0 //低的就作為被動節點arbiterOnly":true //仲裁節點rs.initiate(cfg) //初始化重新整理 之後就可以看到自己的身份了rs.isMaster() //查看節點狀態基本的增刪改查db.t1.insert({"id":1,"name":"tom"}) //建立集合db.t1.find() //查看當前資料db.t1.update({"id":2},{$set:{"name":"jack"}}) //修改指定內容db.t1.remove({"id":1}) //刪除指定資料
show dbs //顯示所有資料庫use local //進入存放記錄檔的資料庫show collections //顯示資料中的所有的集合db.oplog.rs.find() #查看日誌記錄所有操作類比表准節點1故障mongod -f /etc/mongod.conf --shutdown #關閉一主節點服務看看是否別的mongoDB有沒有搶佔mongo --port 27018 #此時會選舉第二個標準節點為主節點類比標註節點2故障mongod -f /etc/mongod2.conf --shutdown #關閉第二主節點mongo --port 27019 #此時被動節點不能成為主節點
仲裁節點是不會複製資訊
rs.help() #協助資訊
rs.printReplicationInfo() #查看記錄檔大小資訊
configured oplog size: 990MB #這個記錄檔大小是可以修改的
rs.printSlaveReplicationInfo() #產看是和那個節點繼進行同步
#你會發現仲裁節點並不具備資料複製
- 更改oplog大小 零時修改
- 要去調整記錄檔大小,從節點會去找主節點進行
同步對方的檔案從而自己也進行了擴容,對於主節點來
說自己的記錄檔大小寬裕為最佳,若不夠則可以零時
進行調整 預設情況下990M,調整從節點
1) 關閉節點服務,因為從節點是主節點複製整合員
2)只能單獨的進行修改,先關閉服務在從複製集中退出來,推出來後就成了一個單一實例 ,
3)use admin #先關閉服務
4)db.shutdownServer() #退出複製集 離線升級
5)修改從節點設定檔
6)mongod -f /etc/mongod2.conf //啟動服務
7)mongo --port 27028 //登陸
8)mongodump --port 27028 --db local --collection ‘oplog.rs‘ //oplog進行完整性備份
9)mongo --port 27028 //進連接埠
10)use local
db.oplog.rs.drop() //刪掉原來的檔案
11)db.runCommand( { create: "oplog.rs", capped: true, size: (2 1024 1024 * 1024) } ) //進行原型建立 改為2048
12)use admin
db.shutdownServer() //再次關閉服務
13)再次修改回來原先的資料 在replication:
replSetName: abc
oplogSizeMB: 2048 //添加
14)mongod -f /etc/mongod2.conf //重新開啟服務 mongo --port 27018 進入連接埠
15)rs.printReplicationInfo() //此時就成了2048 支對但對修改有效
16)rs.stepDown() #有效產生選舉 在主的裡面讓出主的身份
![](http://i2.51cto.com/images/blog/201807/16/056486508bc79f8a63535d95c9d7251c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)![](http://i2.51cto.com/images/blog/201807/16/00b2ec5ce686257662955fe84f94e759.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)![](http://i2.51cto.com/images/blog/201807/16/2a8d53ec8c61716800a096e3edfcbb8d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)![](http://i2.51cto.com/images/blog/201807/16/9514d79b04857075aa1d7e6a1cdc1a05.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
1. 在主伺服器上長建立使用者為rootuse admin db.createUser({"user":"root","pwd":"123","roles":["root"]}) #建立使用者密碼vim /etc/mongod.conf //修改主設定檔同步並且中間有一個認證 修改所有設定檔security: keyFile: /usr/bin/kgcrskey1 //驗證檔案路徑 clusterAuthMode: keyFile //驗證密鑰重啟服務mongod -f /etc/mongod.conf --shutdownmongod -f /etc/mongod.conf /其他幾台的重啟方式都相同,重複操作即可身分識別驗證登陸(先驗證主,再驗證從)當你直接使用登陸命令登陸系統時,使用show dbs 是不能夠查看資料的,此時就需要使用身分識別驗證mongo --port 27018use admindb.auth("root","123123")
MongoDB複製集選舉原理管理