配置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副本集。