Mongodb4.0副本集構建


目前最新的mongodb4.0.2已經支持事務這個重要特性,需要使用的話必須是復制或副本集,這是第一篇先研發如何構建副本集,因為副本集是目前最低成本的高可用群集方式。

1.准備三台服務器,本次使用是的ubuntu16.04。分別在三台服務器執行如下安裝指定,參考官方安裝連接:https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/?_ga=2.66639470.1117419885.1536141422-1139377698.1531391990

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

sudo apt-get update

sudo apt-get install -y mongodb-org

安裝完成,以下是檢測是否安裝完成

sudo apt-get install -y mongodb-org=4.0.x mongodb-org-server=4.0.x mongodb-org-shell=4.0.x mongodb-org-mongos=4.0.x mongodb-org-tools=4.0.x

2. 三台服務器構建並啟動數據庫,本示例使用 /usr/mongo目錄

mkdir /usr/mongo

chmod -R 777 /usr/mongo

cd /usr/mongo

mkdir data

mkdir log

//構建key file用於群集各數據庫間身份驗證(必須有此步才可以把最終的數據庫登陸身份認證信息同步到各節點中)構建完成后復制key_file文件到各節點相同位置

openssl rand -base64 756 > data/key_file
chmod 400 data/key_file

//構建數據庫配置文件

vim config.conf

//添加以下配置內容(並復制到各節點相同位置)

```

systemLog:
  destination: file
  path: /usr/mongo/log/mongod.log
  logAppend: true
storage:
  journal:
   enabled: true
  dbPath: /usr/mongo/data
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
   engineConfig:
    cacheSizeGB: 2
    directoryForIndexes: true
   collectionConfig:
    blockCompressor: snappy
   indexConfig:
    prefixCompression: true
net:
  bindIp: 0.0.0.0
  port: 27017
  maxIncomingConnections: 40000
replication:
     replSetName: "rs1"
     oplogSizeMB: 1024
security:
     authorization: enabled
     keyFile: /usr/mongo/data/key_file

```

//構建log數據庫日志文件

vim log/mongod.log

3.分別在三台服務器以免身份驗證方式啟動數據庫

mongod -f config.conf

4.構建賬號供應用程序連接群集鑒權(本例只添加最高權限賬號root) 盡量在此步連接單實例先創建賬號

//在主服務器連接本機mongodb實例

mongo 127.0.0.1:27017/admin

//創建root賬號

db.createUser(
    {
      user: "root",
      pwd: "password",
     
      roles: [{"role":"root","db":"admin"}],

    }
)

5.生效副本集(只需要在主節點操作一次)

vim initreplica.js

//添加以下內容(ip地址根據自己真實情況填寫, priority是權重值,值最大默認為啟動時主節點)

```

var cfg = { _id: 'rs1',
     members: [
         { _id: 0, host:'192.168.200.244:27017', priority: 100},
         { _id: 1, host:'192.168.200.242:27017', priority: 50},
         { _id: 2, host:'192.168.200.243:27017', arbiterOnly: true}
     ]
};

var error = rs.initiate(cfg);
printjson(error);

```

//保存 文件

//執行生效指令

mongo 127.0.0.1:27017/admin initreplica.js

//執行結果如下

MongoDB shell version v4.0.2
connecting to: mongodb://127.0.0.1:27017/admin
MongoDB server version: 4.0.2
{
     "ok" : 1,
     "operationTime" : Timestamp(1536314326, 1),
     "$clusterTime" : {
         "clusterTime" : Timestamp(1536314326, 1),
         "signature" : {
             "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
             "keyId" : NumberLong(0)
         }
     }
}

6.以鑒權方式啟動群集(三台機相同啟動方式)

mongod -f config.conf –auth

//啟動完成如下顯示並程序常駐

2018-09-08T11:06:59.452+0800 I CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'

//此時想查看當前數據庫啟動情況可以執行如下指令

vim log/mongod.log

7.數據庫工具連接到集群

mongodb://root:password@192.168.200.244:27017,192.168.200.242:27017,192.168.200.243:27017/?readPreference=primaryPreferred&replicaSet=rs1&authSource=admin

8.工具推薦使用nosqlbooster,有免費版,試用期間功能一切可用,試用結束不能導入導出數據和沒有智能提示功能。但會一直可用,下載地址:https://nosqlbooster.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM