在Ubuntu下搭建MongoDB复制集(Replica Set)可以提供数据冗余和高可用性。以下是详细的步骤:
首先,确保你已经在Ubuntu上安装了MongoDB。如果还没有安装,可以使用以下命令:
sudo apt update
sudo apt install -y mongodb-org
编辑MongoDB配置文件 /etc/mongod.conf,添加复制集配置。假设我们有三个节点,分别命名为 rs0/primary, rs0/secondary1, rs0/secondary2。
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
net:
port: 27017
bindIp: 0.0.0.0
replication:
replSetName: rs0
保存配置文件并重启MongoDB服务:
sudo systemctl restart mongod
连接到MongoDB shell:
mongo --host <primary_ip> --port 27017
在MongoDB shell中初始化复制集:
rs.initiate(
{
_id: "rs0",
members: [
{ _id: 0, host: "<primary_ip>:27017" },
{ _id: 1, host: "<secondary1_ip>:27017" },
{ _id: 2, host: "<secondary2_ip>:27017" }
]
}
)
将 <primary_ip>, <secondary1_ip>, <secondary2_ip> 替换为实际的IP地址。
在MongoDB shell中运行以下命令来验证复制集的状态:
rs.status()
你应该能看到复制集的成员及其状态。
如果你需要添加更多的节点,可以使用以下命令:
rs.add("<new_node_ip>:27017")
将 <new_node_ip> 替换为新节点的IP地址。
为了测试故障转移,可以手动停止主节点,观察复制集是否能够自动选举新的主节点:
sudo systemctl stop mongod
然后在MongoDB shell中再次运行 rs.status(),你应该能看到新的主节点。
确保你的防火墙允许MongoDB的端口(默认是27017)通信:
sudo ufw allow 27017
通过以上步骤,你可以在Ubuntu上成功搭建一个MongoDB复制集。复制集提供了数据冗余和高可用性,是生产环境中常用的数据库架构之一。