目前最新的mongodb4.0.2已經支持事務這個重要特性,須要使用的話必須是複製或副本集,這是第一篇先研發如何構建副本集,由於副本集是目前最低成本的高可用羣集方式。sql
1.準備三臺服務器,本次使用是的ubuntu16.04。分別在三臺服務器執行以下安裝指定,參考官方安裝鏈接:https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/?_ga=2.66639470.1117419885.1536141422-1139377698.1531391990mongodb
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4shell
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 updatejson
sudo apt-get install -y mongodb-orgubuntu
安裝完成,如下是檢測是否安裝完成vim
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目錄app
mkdir /usr/mongonosql
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