在CentOS上设置MongoDB复制(Replication)涉及以下几个步骤:
首先,确保你已经在所有节点上安装了MongoDB。你可以从MongoDB官方网站下载并安装最新版本的MongoDB。
sudo yum install -y mongodb-org
在每个节点上编辑MongoDB配置文件(通常是/etc/mongod.conf),确保以下配置项正确设置:
replication.replSetName: 设置复制集的名称。net.bindIp: 绑定IP地址,确保所有节点都可以互相通信。例如,在主节点上:
replication:
replSetName: "rs0"
net:
bindIp: 0.0.0.0
在从节点上:
replication:
replSetName: "rs0"
net:
bindIp: 0.0.0.0
在所有节点上启动MongoDB服务:
sudo systemctl start mongod
sudo systemctl enable mongod
连接到任意一个MongoDB实例,并初始化复制集。假设你连接到主节点:
mongo --host <主节点IP>
在mongo shell中执行以下命令:
rs.initiate(
{
_id: "rs0",
members: [
{ _id: 0, host: "<主节点IP>:27017" },
{ _id: 1, host: "<从节点1IP>:27017" },
{ _id: 2, host: "<从节点2IP>:27017" }
]
}
)
在mongo shell中执行以下命令来验证复制集的状态:
rs.status()
你应该看到所有节点都列在复制集中,并且状态为SECONDARY或PRIMARY。
如果你希望某个节点成为主节点,可以配置优先级。在mongo shell中执行以下命令:
cfg = rs.conf()
cfg.members[0].priority = 2 # 主节点优先级最高
rs.reconfig(cfg)
默认情况下,所有读操作都在主节点上进行。你可以通过配置读偏好(read preference)来将读操作分发到从节点。
在应用程序中设置读偏好:
db.getMongo().setReadPref('secondaryPreferred');
或者在mongo shell中设置:
db.setSlaveOk()
定期监控复制集的状态,并进行必要的维护,例如备份和恢复。
通过以上步骤,你就可以在CentOS上成功设置MongoDB复制。