配置CentOS上的MongoDB副本集涉及幾個步驟,包括安裝MongoDB、配置MongoDB實例以及初始化副本集。以下是一個詳細的步驟指南:
首先,確保你的CentOS系統是最新的,并且已經安裝了必要的依賴包。
sudo yum update -y
sudo yum install -y mongodb-org
默認情況下,MongoDB會以單節點模式運行。為了配置副本集,你需要啟動多個MongoDB實例,每個實例可以運行在不同的端口上。
編輯第一個實例的配置文件(通常是 /etc/mongod.conf),添加或修改以下內容:
net:
port: 27017
storage:
dbPath: /var/lib/mongo
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
replication:
replSetName: rs0
然后啟動這個實例:
sudo systemctl start mongod
sudo systemctl enable mongod
編輯第二個實例的配置文件(例如 /etc/mongod.conf),添加或修改以下內容:
net:
port: 27018
storage:
dbPath: /var/lib/mongo
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
replication:
replSetName: rs0
然后啟動這個實例:
sudo systemctl start mongod
sudo systemctl enable mongod
編輯第三個實例的配置文件(例如 /etc/mongod.conf),添加或修改以下內容:
net:
port: 27019
storage:
dbPath: /var/lib/mongo
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
replication:
replSetName: rs0
然后啟動這個實例:
sudo systemctl start mongod
sudo systemctl enable mongod
連接到其中一個MongoDB實例并初始化副本集。你可以使用 mongo shell 來完成這個操作。
mongo --port 27017
在 mongo shell 中,運行以下命令來初始化副本集:
rs.initiate(
{
_id: "rs0",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019" }
]
}
)
在 mongo shell 中,運行以下命令來驗證副本集的狀態:
rs.status()
你應該能看到所有節點的狀態都是 SECONDARY 或 PRIMARY,并且副本集已經成功初始化。
確保你的防火墻允許MongoDB實例之間的通信。你可以使用 firewall-cmd 來添加規則:
sudo firewall-cmd --permanent --zone=public --add-port=27017/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27018/tcp
sudo firewall-cmd --permanent --zone=public --add-port=27019/tcp
sudo firewall-cmd --reload
你可以根據需要配置更多的復制選項,例如優先級、隱藏節點等。以下是一些常見的配置選項:
cfg = rs.conf()
// 設置節點優先級
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
// 重新配置副本集
rs.reconfig(cfg)
通過以上步驟,你應該能夠在CentOS上成功配置一個MongoDB副本集。