成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MongoDB復制集集群原理詳解及部署

數據庫 其他數據庫 MongoDB
MongoDB中的復制集(也被稱為副本)是一組維護相同數據集的mongod進程。副本集提供冗余性及和高可用,是所有生產部署的基礎。

復制集介紹

MongoDB中的復制集(也被稱為副本)是一組維護相同數據集的mongod進程。副本集提供冗余性及和高可用,是所有生產部署的基礎。簡單來說,復制集有多臺MongoDB組成的一個集群,集群中有一個主節點(Primary)和N個副本節點(Secondary)等,它們有相同的數據庫,假如主MongoDB服務器或者MongoDB實例Down機之后,其它的副本服務器可以繼續提供服務,實現數據的高可用及可靠性。

復制集群架構

術語介紹:

術語 類型 描述
Primary 主節點 負責整個集群的讀寫操作,包含了所有改變操作的日志
Secondary 備節點 同步主服務器所有的數據,負責集群的讀取請求,主服務器宕機可以稱為主節點
Arbiter 仲裁者 在主節點宕機后只進行投票,不參與選舉,不同步主節點數據


此架構由一個Primary節點和兩個Secondary節點組成

1)Primary節點為主節點,所有的寫操作或者更改操作都只能從Primary節點中操作(復制集內的所有成員都可以接收讀操作,但是,默認情況下,應用程序將其讀操作指向主成員),主節點上所有的更改及寫操作都會記錄到oplog日志中。

2)兩臺Secondary節點復制Primary節點的oplog日志,通過異步的方式去執行oplog日志中的記錄來和Primary節點達到數據一致性。

3)oplog作用主要是記錄主節點的寫入操作,充當復制源。

4)如果Primary節點無故Down機之后,復制集集群會通過投票機制在兩臺Secondary中選舉一臺升級為Primary節點。

投票選舉機制

MongoDB節點之間維護心跳檢查,主節點選舉由心跳觸發。

心跳檢查 MongoDB復制集成員會向自己之外的所有成員發送心跳并處理響應信息,因此每個節點都維護著該節點看到的其它所有節點的狀態信息,節點根據自己的集群狀態判斷是否需要更新新的Primary。在實現的時候主要由兩個異步的過程分別處理心跳響應和超時,每個復制集成員都會在后臺運行與復制集所有節點的心跳線程,在以下幾種情況下會觸發狀態檢測過程:

•Secondary節點權重(Priority)比Primary節點高時,發起替換選舉;

•Secondary節點發現集群中沒有Primary時,發起選舉;

•Primary節點不能訪問到大部分成員時主動降級,降級操作會斷開連接,終止用戶請求等;

•復制集成員心跳檢測結果發生變化,比如某個節點掛了或者新增節點,發起重新投票選舉規則;

•超過4s沒有執行狀態檢測過程,發起替換選舉;

選舉發起 發起選舉的節點首先需要做一些條件判斷,維護主節點的有N個備用節點,備用節點中的所有節點都可能被選舉成為主節點,成為主節點前每個備節點都會檢測自身以及全局條件是否滿足,檢測條件如下:

1.是否看見復制集中是否有Majority在線

2.自身Priority是否大于0

3.自身不為arbiter

4.自身opTime不能落后于最新節點10s以上

5.自身存儲的集群程序按信息為最新

如果所有條件滿足,則將自身添加到主節點的備用列表中,否則,將自身從列表中移除

自身檢測

•MongoDB選舉需要獲得大多數投票才能通過,如果沒有節點投反對票,且獲得成票數超過有權投票節點總數的1/2,則能成為Primary。否則進入下一輪選舉。為避免陷入無限重復選舉,MongoDB建議復制集的成員個數為奇數,當Secondary為雙數時,可以增加一個Arbiter節點。

•選舉過程中,復制集沒有主節點,所有成員都是只讀狀態

•選舉過程很復雜,一般情況下需要5s左右進行選主。

•如果新選擇的主節點立刻掛掉,至少需要30s時間重新選主。

大多數的定義  假設復制集內投票成員數量為N,則大多數 = N/2 + 1 ,當復制集內存活成員數量不足大多數時,整個復制集將無法選舉出Primary,復制集將無法提供寫服務,處于只讀狀態。 我們按照上面的架構來舉例,三臺MongoDB,一臺Primary,兩臺Secondary,主節點掛了之后,只有兩臺Secondary可以投票,根據公式我們來算 “2/2 + 1 = 2”,也就是算大多數等于2,但是當復制集內存活的成員數量不足大多數時,我們的大多數為2,集群成員也為2,所以這兩臺集群成員會發起選舉投票機制,如果兩臺Secondary節點自身條件都滿足的情況下,則先發起選舉節點的成員成為Primary節點  

投票成員數 大多數 容忍失效數
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2
6 4 2
7 4 3

復制集群成員說明

Secondary 正常情況下,復制集的Seconary會參與Primary選舉(自身也可能會被選為Primary),并從Primary同步最新寫入的數據,以保證與Primary存儲相同的數據。Secondary可以提供讀服務,增加Secondary節點可以提供復制集的讀服務能力,同時提升復制集的可用性。另外,Mongodb支持對復制集的Secondary節點進行靈活的配置,以適應多種場景的需求。

Arbiter Arbiter節點只參與投票,不能被選為Primary,并且不從Primary同步數據。比如你部署了一個2個節點的復制集,1個Primary,1個Secondary,任意節點宕機,復制集將不能提供服務了(無法選出Primary),這時可以給復制集添加一個Arbiter節點,即使有節點宕機,仍能選出Primary。Arbiter本身不存儲數據,是非常輕量級的服務,當復制集成員為偶數時,最好加入一個Arbiter節點,以提升復制集可用性。

Priority0 Priority0節點的選舉優先級為0,不會被選舉為Primary。比如你跨機房A、B部署了一個復制集,并且想指定Primary必須在A機房,這時可以將B機房的復制集成員Priority設置為0,這樣Primary就一定會是A機房的成員。(注意:如果這樣部署,最好將『大多數』節點部署在A機房,否則網絡分區時可能無法選出Primary)

Vote0 Mongodb 3.0里,復制集成員最多50個,參與Primary選舉投票的成員最多7個,其他成員(Vote0)的vote屬性必須設置為0,即不參與投票。

Hidden Hidden節點不能被選為主(Priority為0),并且對Driver不可見。因Hidden節點不會接受Driver的請求,可使用Hidden節點做一些數據備份、離線計算的任務,不會影響復制集的服務。

Delayed Delayed節點必須是Hidden節點,并且其數據落后與Primary一段時間(可配置,比如1個小時)。因Delayed節點的數據比Primary落后一段時間,當錯誤或者無效的數據寫入Primary時,可通過Delayed節點的數據來恢復到之前的時間點。

優先級為0復制集成員

此架構由一個Primary節點和兩個Secondary節點組成

1)此架構由一臺Primary主節點和兩臺Secondary備節點組成,其原理就是主從復制架構的原理,兩臺Secondary節點同樣通過oplog日志來與Primary主節點達成數據一致

2)與其不同的是在Data Center2節點上的Secondary備用節點的實例優先級priority為0,則不參與選舉,也不可能會成為Primary節點,將其優先級配置為0,主要是防止它成為主節點,這在多數據中心的部署特別有用。

3)優先級值范圍為 0-100(0表示不參與選舉),在復制集群中,優先級高的優先成為主節點,假如我們原來集群中有三臺節點,主節點優先級為2,其它兩臺備節點優先級為1,當我們新加入到集群一臺MongoDB實例,給它優先級設置為4,則該實例在加入集群后就會自動搶奪Primary到本機。

仲裁節點架構

上圖中,三個成員組成復制集群

一個主庫:負責整個集群的所有寫、更改操作

一個從庫:通過oplog日志來與主節點數據達成一致

一個Airbiter節點,在選舉中,只進行投票,不能成為主庫,而且不復制Primary的任何數據,因此這個架構中只能提供一個完成的副本Secondary,Arbiter只需要很少的資源,代價是有限的冗余和容錯,當Primary節點故障后,Aribiter將票數頭給Secondary,使其成為Primary節點,如果Primary節點再次故障后,集群將不可用,Arbiter節點也未存儲任何數據。

集群中還有其它的節點成員,但是我們用的比較少,所以此文章中沒有提到。可以自行查閱官方文檔:https://docs.mongodb.com/manual/core/replica-set-members/

復制集集群環境部署

環境說明

本次使用一臺設備多實例進行,如果你準備在多臺設備上部署,你需要考慮的如下:1)時鐘是否一致 2)網絡是否通暢 3)SElinux是否關閉或者策略放通 4)環境是否一致 

  1. [root@MongoDB ~]# lsb_release -a  
  2. LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch 
  3. Distributor ID:    CentOS  
  4. Description:    CentOS Linux release 7.6.1810 (Core)   
  5. Release:    7.6.1810  
  6. Codename:    Core  
  7. [root@MongoDB ~]# hostname -I  
  8. 10.211.55.12 192.168.0.100 fdb2:2c26:f4e4:0:21c:42ff:fedf:4d85  

前期準備 

  1. #創建用戶組  
  2. useradd mongod  
  3. echo 'abcdef' | passwd --stdin mongod  
  4. #下載MongoDB  
  5. wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.0.tgz  
  6. #添加文件打開數和mongod用戶進程連接數  
  7. cat >> /etc/security/limits.conf << EOF  
  8. * soft nofile 65536  
  9. * hard nofile 65536  
  10. mongod soft nproc 32768  
  11. mongod hard nproc 32768  
  12. EOF   
  13. #使下面兩個文件修改為never  
  14. echo never > /sys/kernel/mm/transparent_hugepage/enabled  
  15. echo never > /sys/kernel/mm/transparent_hugepage/defrag  
  16. #開機自動修改  
  17. cat >> /etc/rc.local << EOF  
  18. if test -f /sys/kernel/mm/transparent_hugepage/enabled;then  
  19.     echo never > /sys/kernel/mm/transparent_hugepage/enabled  
  20. fi  
  21. if test -f /sys/kernel/mm/transparent_hugepage/defrag;then  
  22.     echo never > /sys/kernel/mm/transparent_hugepage/defrag  
  23. fi  
  24. EOF  
  25. 此步驟完成后  
  26. #官方給出MongoDB需要以下兩個庫的依賴  
  27. yum install libcurl openssl -y  
  28. #解壓并復制程序文件到bin目錄  
  29. mkdir /usr/local/mongodb  
  30. tar xf mongodb-linux-x86_64-rhel70-4.2.0.tgz  
  31. cp -rf mongodb-linux-x86_64-rhel70-4.2.0/bin/ /usr/local/mongodb/  
  32. chown -Rf mongod.mongod /usr/local/moongodb/  
  33. #添加程序環境  
  34. cat >> /etc/profile << EOF  
  35. export MONGODB_HOME=/usr/local/mongodb  
  36. export PATH=\$MONGODB/bin:\$PATH  
  37. EOF  
  38. source /etc/profile 

環境配置

1)接下來使用mongod用戶來操作 

  1. su mongod 

2)創建文件目錄 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.     mkdir -p /usr/local/mongodb/$i/{conf,data,logs,run}  
  5. done 

配置文件

編輯一臺配置文件,然后復制到其它實例,配置文件為yaml語法 關于以下配置文件詳解,請參考:”https://abcops.cn/mongodb-conf/“ 

  1. cat > mongod.conf << EOF  
  2. systemLog:  
  3.   destination: file  
  4.   path: /usr/local/mongodb/27017/logs/mongodb.log  
  5.   logAppend: true  
  6.   verbosity: 0  
  7.   logRotate: rename 
  8. storage:  
  9.   journal:  
  10.     enabled: true  
  11.   dbPath: /usr/local/mongodb/27017/data  
  12.   directoryPerDB: true  
  13.   engine: wiredTiger  
  14.   wiredTiger:  
  15.     engineConfig:  
  16.       cacheSizeGB: 1  
  17.       directoryForIndexes: true  
  18.       journalCompressor: zlib  
  19.     collectionConfig:  
  20.       blockCompressor: zlib  
  21.     indexConfig:  
  22.       prefixCompression: true  
  23. processManagement:  
  24.   fork: true  
  25.   pidFilePath: /usr/local/mongodb/27017/run/mongod.pid  
  26. net:  
  27.   port: 27017  
  28.   bindIp: 10.211.55.12  
  29.   maxIncomingConnections: 65536  
  30.   wireObjectCheck: true  
  31.   ipv6: false  
  32. replication:  
  33.   oplogSizeMB: 4096  
  34.   replSetName: abcops_repl  
  35. setParameter:  
  36.   connPoolMaxShardedConnsPerHost: 200  
  37.   connPoolMaxConnsPerHost: 200  
  38. EOF 

復制配置文件到目錄中,并修改其端口及目錄位置 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         \cp /home/mongod/mongod.conf /usr/local/mongodb/$i/conf  
  5.         sed -i "s/27017/$i/g" /usr/local/mongodb/$i/conf/mongod.conf  
  6. done 

啟動MongoDB實例

啟動腳本如下 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/$i/conf/mongod.conf  
  5. done 

關閉腳本如下 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         /usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/$i/conf/mongod.conf  
  5. done 

三個實例啟動后,不代表復制集已經搭建成功了,還需要進行復制集初始化

配置復制集

連接任何一個實例都可以進行配置 

  1. 這是我連接27017的實例  
  2. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27017  
  1. > use admin  
  2. > config={  
  3. _id:'abcops_repl',  
  4. members:[  
  5. {_id: 0, host: '10.211.55.12:27017',priority:2},  
  6. {_id: 1, host: '10.211.55.12:27018',priority:1},  
  7. {_id: 2, host: '10.211.55.12:27019',arbiterOnly:true},  
  8.     ]  
  9.  
  10. > rs.initiate(config)  
  11. #以上參數解析  
  12. use admin:進入admin數據庫  
  13. config:配置復制集  
  14. _id:'abcops_repl':指定復制集組名稱,與配置文件中的 replSetName 參數需要保持一致  
  15. members:規定的函數,不能更改  
  16. _id:設置組成員的ID編號,可以自定義,我這里為 0、1、2  
  17. host:指定加入復制集成員的IP地址及端口,我們在配置文件中指定了bindIp為10.211.55.12,這里就不能寫127.0.0.1,必須寫為bind_Ip指定的地址  
  18. priority:指定優先級0-100,優先級最高的成為Primary節點,優先級為可選選項,如果不指定默認都為1  
  19. arbiterOnly:是否開啟仲裁節點true/false  
  20. rs.initiate(config):初始化復制集配置 

以上參數圖示如下,給你提供下參照

圖中開始為SECONDARY,代表復制集集群正在進行選舉Primary節點,大概5s左右,根據選舉機制選舉成功后,成為主節點的SECONDARY狀態變為PRIMARY

復制集常用命令

1)查看誰是主節點 

  1. abcops_repl:PRIMARY> db.isMaster()    

2)查看當前復制集集群中成員的配置 

  1. abcops_repl:PRIMARY> rs.conf() 

3)查看復制集集群成員狀態 

  1. abcops_repl:PRIMARY> rs.status() 

4)新增節點到復制集 新增節點之前,該實例的配置中的replSetName復制集名稱,必須和集群一致 

  1. abcops_repl:PRIMARY> rs.add("10.211.55.12:27020") 

5)新增仲裁節點 

  1. abcops_repl:PRIMARY> rs.addArb("10.211.55.12:27020") 

6)從復制集內刪除節點 

  1. abcops_repl:PRIMARY> rs.remove("10.211.55.12:27020") 

7)檢查oplog日志時間和大小 

  1. abcops_repl:PRIMARY> rs.printReplicationInfo()   
  2. configured oplog size:   4096MB  
  3. log length start to end: 2422secs (0.67hrs)  
  4. oplog first event time:  Wed Sep 11 2019 12:22:13 GMT+0800 (CST)  
  5. oplog last event time:   Wed Sep 11 2019 13:02:35 GMT+0800 (CST)  
  6. now:                     Wed Sep 11 2019 13:02:37 GMT+0800 (CST) 

8)降級服務器 此操作只能在PRIMARY上操作 通過執行rs.stepDown命令將當前主服務器主動降級為備用節點,120單位為s,為120秒內這個實力不能把自己選為PRIMARY角色,120秒后由于它本身的優先級較高,所以會重新搶占PRIMARY節點。 

  1. abcops_repl:PRIMARY> rs.stepDown(120) 

9)允許在Secondary節點可以進行查詢 在副本節點上操作 

  1. rs.slaveOk() 

10)查看當前連接 

  1. db.getMongo() 

修改優先級

修改27018的優先級為3,使其優先級超過27017實例,奪得PRIMARY角色,此操作需在PRIMARY上執行 

  1. abcops_repl:PRIMARY> config=rs.conf()  
  2. abcops_repl:PRIMARY> config.members[1].priority=3  
  3.  
  4. abcops_repl:PRIMARY> rs.reconfig(config)  
  5.  
  6.     "ok" : 1,  
  7.     "$clusterTime" : {  
  8.         "clusterTime" : Timestamp(1568179129, 1),  
  9.         "signature" : {  
  10.             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),  
  11.             "keyId" : NumberLong(0)  
  12.         }  
  13.     },  
  14.     "operationTime" : Timestamp(1568179129, 1)  
  15. abcops_repl:PRIMARY> rs.conf()  
  16. abcops_repl:SECONDARY> db.isMaster()  
  17. #以上參數解析  
  18. config=rs.conf():將現有的配置讀取到變量中進行存儲  
  19. config.members[1].priority=3:修改變量中的值,1是指執行rs.conf()中看到節點的順序,不是ID號哦,rs.conf()看到的順序是從0開始排序,三個副本集排序就是0-3  
  20. rs.reconfig(config):將修改后的數據同步到配置,使修改生效  
  21. rs.conf():查看當前配置,可以看到優先級哦  
  22. db.isMaster():查看誰是Primary節點 

復制測試

1)插入數據 

  1. #連接當前Primary節點  
  2. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27018  
  3. #進入abcops數據庫,在documents文檔中插入以下JSON格式的數據  
  4. abcops_repl:PRIMARY> use abcops  
  5. abcops_repl:PRIMARY> db.documents.insert(  
  6.     {name: "xuweiliang",  
  7.     age: 25,  
  8.     Job: "DevOps"}  
  9.  
  10. #查看documents文檔中的數據  
  11. abcops_repl:PRIMARY> db.documents.find()  
  12. { "_id" : ObjectId("5d78863768fbf9eac4704232"), "name" : "xuweiliang", "age" : 25, "Job" : "DevOps" }  
  13. #查看復制節點狀態  
  14. abcops_repl:PRIMARY> rs.printSlaveReplicationInfo()  
  15. source: 10.211.55.12:27017  
  16.     syncedTo: Wed Sep 11 2019 13:30:42 GMT+0800 (CST)  
  17.     0 secs (0 hrs) behind the primary 

2)登錄Secondary節點查看 

  1. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27017  
  2. abcops_repl:SECONDARY> rs.slaveOk()         #運行副本節點可進行查詢  
  3. abcops_repl:SECONDARY> show dbs             #查看當前節點的數據庫  
  4. abcops  0.000GB  
  5. admin   0.000GB  
  6. config  0.000GB 
  7. local   0.000GB  
  8. abcops_repl:SECONDARY> use abcops               #abcops數據庫已經從主節點同步至此  
  9. switched to db abcops  
  10. abcops_repl:SECONDARY> db.getCollectionNames()  #以下連續三個命令都是查看進入到abcops庫中的文檔命令  
  11. [ "documents" ]  
  12. abcops_repl:SECONDARY> show collections  
  13. documents  
  14. abcops_repl:SECONDARY> show tables  
  15. documents  
  16. abcops_repl:SECONDARY> db.documents.find()      #查看文檔中的內容  
  17. { "_id" : ObjectId("5d78863768fbf9eac4704232"), "name" : "xuweiliang", "age" : 25, "Job" : "DevOps" } 

創建復制集中的賬戶

1)連接到主節點,創建用戶 以下創建的用戶及權限和角色請參考下面用戶權限說明 

  1. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27018  
  2. abcops_repl:PRIMARY> use admin  
  3. abcops_repl:PRIMARY> db.createUser( {  
  4.         user:'abcops',  
  5.         pwd:'123456',  
  6.         roles:[ { role: "root", db: "admin" } ]  
  7.     }  
  8.  
  9. Successfully added user: {  
  10.     "user" : "abcops",  
  11.     "roles" : [  
  12.         {  
  13.             "role" : "root",  
  14.             "db" : "admin"  
  15.         }  
  16.     ]  
  17.  
  18. #查看所有創建的用戶信息  
  19. abcops_repl:PRIMARY> show users 

用戶中權限的說明

權限 說明
Read 允許用戶讀取指定數據庫
readWrite 允許用戶讀寫指定數據庫
dbAdmin 允許用戶在指定數據庫中指定管理函數,如(索引創建、刪除、查看統計訪問system.profile)
userAdmin 允許用戶向system.users集合寫入,可以找指定數據里面創建、刪除和管理用戶
clusterAdmin 只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限
readAnyDatabase 只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
readWriteAnyDatabase 只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
userWriteAnyDatabase 只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
dbAdminAnyDatabase 只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限
root 只在admin數據庫中可用,超級管理員

為復制集集群添加權限認證

復制集我們這里采用keyfile文件實現權限認證,并且副本集中的所有成員使用的keyfile必須一樣

添加安全認證配置

三臺實例必須都要配置 

  1. cat >> /usr/local/mongodb/27017/conf/mongod.conf << EOF  
  2. security:  
  3.   authorization: enabled  
  4.   clusterAuthMode: keyFile  
  5.   keyFile: /usr/local/mongodb/27017/conf/keyfile  
  6.   javascriptEnabled: true  
  7. EOF   
  8. cat >> /usr/local/mongodb/27018/conf/mongod.conf << EOF 
  9. security:  
  10.   authorization: enabled  
  11.   clusterAuthMode: keyFile  
  12.   keyFile: /usr/local/mongodb/27018/conf/keyfile  
  13.   javascriptEnabled: true  
  14. EOF  
  15. cat >> /usr/local/mongodb/27019/conf/mongod.conf << EOF  
  16. security:  
  17.   authorization: enabled  
  18.   clusterAuthMode: keyFile  
  19.   keyFile: /usr/local/mongodb/27019/conf/keyfile  
  20.   javascriptEnabled: true  
  21. EOF 

keyfile文件操作

1)生產keyfile文件 

  1. openssl rand -base64 90 > ./keyfile 

2)復制keyfile文件到其它實例中 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         \cp /home/mongod/keyfile /usr/local/mongodb/$i/conf/  
  5. done 

3)修改keyfile權限 keyfile文件權限必須為 X00 ,不能給 group 和 other 成員分配任何權限,否則實例無法啟動 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         chmod 400 /usr/local/mongodb/$i/conf/keyfile  
  5. done 

4)重啟所有實例 

  1. #!/bin/bash  
  2. for i in 27017 27018 27019  
  3.     do  
  4.         /usr/local/mongodb/bin/mongod --shutdown -f /usr/local/mongodb/$i/conf/mongod.conf  
  5.         sleep 3s  
  6.         /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/$i/conf/mongod.conf  
  7. done 

認證驗證

登錄驗證可以在連接的時候指定用戶名和密碼,也可以先連接到數據庫后再進行認證

1)登錄指定用戶密碼 

  1. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27018 --username abcops -p 123456  
  2. abcops_repl:PRIMARY> show dbs  
  3. abcops  0.000GB  
  4. admin   0.000GB  
  5. config  0.000GB  
  6. local   0.000GB 

2)先登錄,后驗證 

  1. abcops_repl:PRIMARY> use admin                          #必須要先切換到admin庫中才可以進行進行驗證  
  2. switched to db admin  
  3. abcops_repl:PRIMARY> db.auth( 'abcops','123456' )       #認證用戶名及密碼,認證成功返回1,否則返回0  
  4.  
  5. abcops_repl:PRIMARY> show dbs       
  6. abcops  0.000GB  
  7. admin   0.000GB  
  8. config  0.000GB  
  9. local   0.000GB  
  10. abcops_repl:PRIMARY> db  
  11. admin 

3)在備庫進行驗證 備庫只能進行查詢,勿要在備庫上進行任何操作 

  1. /usr/local/mongodb/bin/mongo --host 10.211.55.12 --port 27017  
  2. abcops_repl:SECONDARY> rs.slaveOk()  
  3. abcops_repl:SECONDARY> use admin  
  4. switched to db admin  
  5. abcops_repl:SECONDARY> db.auth('abcops','123456')  

客戶端驗證

我們可以找一臺SQL管理工具來連接該庫

可以看到我創建的abcops庫和一個文檔及三個字段

 

 

責任編輯:龐桂玉 來源: 運維派
相關推薦

2010-08-12 15:30:10

MySQL集群

2023-01-31 08:03:32

部署mongod配置

2017-04-26 08:51:36

MongoDB集群實戰

2020-12-22 10:11:13

MySQL數據庫復制原理

2024-07-04 08:00:24

2009-09-15 16:08:00

2019-09-16 16:05:13

Redis集群模式

2014-03-28 09:35:11

MongoDBSharding

2019-08-20 14:02:07

MongoDB數據庫恢復數據

2020-04-21 22:59:50

Redis搭建選舉

2019-07-26 14:31:43

服務器集群部署

2023-11-21 09:38:09

2010-12-12 21:58:00

半靜態語言動態語言靜態語言

2019-10-11 10:52:42

Web架構MongoDB

2024-12-18 08:02:09

2009-07-10 11:08:40

2019-09-02 14:53:53

JVM內存布局GC

2024-01-04 08:16:34

Spring國際化標準

2025-03-04 02:20:00

EurekaNetflixSpring

2023-02-14 08:01:32

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜夜91| 99精品欧美 | 欧美日韩国产一区二区三区 | 欧美日韩高清在线一区 | 亚洲综合五月天婷婷 | 天堂一区 | 国产精品久久久久久久久久尿 | 在线视频第一页 | 亚洲视频区 | 成人在线精品 | 精品国产一级 | 久久精品一区 | 91免费版在线观看 | 视频一二三区 | 欧美日韩高清一区二区三区 | 欧美精品久久久久 | 99爱视频 | 欧美一区2区三区4区公司二百 | a国产视频 | 91传媒在线播放 | 中文日韩在线 | 成人免费看片网 | 久久噜噜噜精品国产亚洲综合 | 午夜私人影院在线观看 | 国产精品日韩欧美 | 久久亚洲春色中文字幕久久久 | 精品久久久久久亚洲精品 | 久久国产福利 | 亚洲一区二区三区免费视频 | 日韩在线观看网站 | 91精品久久久久久久久久 | 中文字幕免费在线 | julia中文字幕久久一区二区 | 麻豆久久久久久久久久 | 精品国产一区二区国模嫣然 | 国产视频综合 | 最近免费日本视频在线 | 一区二区三区在线 | 草久久 | 精品一区二区三区电影 | 亚洲精品无人区 |