在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复制。