目前最新的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