在Linux上高效部署MongoDB涉及多個步驟,包括安裝、配置、優化以及高可用性設置。以下是一個詳細的指南:
配置MongoDB源:
cd /etc/yum.repos.d
sudo vim mongodb-org-4.4.repo
在文件中添加以下內容:
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
安裝MongoDB:
sudo yum install -y mongodb-org
啟動MongoDB服務:
sudo systemctl start mongod
設置MongoDB開機自啟:
sudo systemctl enable mongod
添加MongoDB的APT倉庫:
sudo apt-get update
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
安裝MongoDB包:
sudo apt-get install -y mongodb-org
啟動MongoDB服務:
sudo systemctl start mongod
設置MongoDB開機自啟:
sudo systemctl enable mongod
編輯 /etc/mongod.conf 文件,確保以下配置項正確設置:
storage.dbPath: 數據庫存儲路徑,例如 /var/lib/mongodb。systemLog.destination: 日志文件路徑,例如 /var/log/mongodb/mongod.log。net.port: MongoDB端口,默認27017。net.bindIp: 允許連接的IP地址,通常設置為 0.0.0.0 以允許所有IP連接。replication.replSetName: 副本集名稱,例如 rs0。初始化副本集:
連接到任意一個MongoDB實例并初始化副本集:
mongo --host localhost --port 27017
在mongo shell中執行:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "node1:27017" },
{ _id: 1, host: "node2:27017" },
{ _id: 2, host: "node3:27017" }
]
})
添加更多節點:
在每個節點上執行以下命令添加其他節點到副本集:
mongo --host node2 --port 27017
rs.add(node3:27017)
配置優先級和投票權:
為了確保主節點的穩定性,可以配置節點的優先級和投票權:
cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg)
配置仲裁節點(可選):
如果只有兩個數據節點,可以添加一個仲裁節點:
mongo --host node4 --port 27017
rs.addArb(arbiter_host:27017)
為經常用于查詢的字段創建索引:
db.collection.createIndex({ field: 1 })
優化查詢語句,減少不必要的數據處理:
db.collection.find({ field: 1 }).limit(10)
調整MongoDB配置文件,如 storage.wiredTiger.engineConfig.cacheSizeGB、net.maxIncomingConnections 等。
使用MongoDB提供的工具如 mongostat 和 mongotop 監控數據庫性能。配置日志記錄,以便及時發現和解決問題。
定期備份數據,并測試恢復過程,以確保在發生災難時能夠快速恢復。
通過以上步驟,你可以在Linux上高效部署MongoDB,并確保其高性能和高可用性。