linux

MongoDB复制集在Linux上怎么搭建

小樊
45
2025-08-27 18:32:23
栏目: 云计算

在Linux上搭建MongoDB复制集(Replica Set)可以提供数据冗余和高可用性。以下是一个基本的步骤指南:

1. 安装MongoDB

首先,确保你已经在所有节点上安装了MongoDB。你可以从MongoDB官方网站下载并安装适合你Linux发行版的MongoDB版本。

在Ubuntu上安装MongoDB:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

在CentOS上安装MongoDB:

cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
sudo yum install -y mongodb-org
sudo systemctl start mongod
sudo systemctl enable mongod

2. 配置MongoDB

在每个节点上编辑MongoDB配置文件(通常是/etc/mongod.conf),确保以下配置:

storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true

systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

net:
  port: 27017
  bindIp: 0.0.0.0  # 绑定所有IP地址

replication:
  replSetName: rs0  # 复制集名称

3. 启动MongoDB服务

在每个节点上启动MongoDB服务:

sudo systemctl start mongod
sudo systemctl enable mongod

4. 初始化复制集

连接到任意一个MongoDB实例并初始化复制集:

mongo --host <node1_ip> --port 27017

在Mongo shell中执行以下命令:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "<node1_ip>:27017" },
    { _id: 1, host: "<node2_ip>:27017" },
    { _id: 2, host: "<node3_ip>:27017" }
  ]
})

<node1_ip>, <node2_ip>, <node3_ip>替换为你的节点IP地址。

5. 验证复制集状态

在Mongo shell中执行以下命令来验证复制集的状态:

rs.status()

你应该看到所有节点都列在复制集中,并且状态为SECONDARYPRIMARY

6. 配置优先级(可选)

你可以配置每个节点的优先级,以控制哪个节点成为主节点:

cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 1
cfg.members[2].priority = 1
rs.reconfig(cfg)

7. 配置仲裁节点(可选)

如果你有奇数个节点,可以添加一个仲裁节点来提高复制集的可用性:

cfg = rs.conf()
cfg.members.push({
  _id: 3,
  host: "<arbiter_ip>:27017",
  arbiterOnly: true
})
rs.reconfig(cfg)

<arbiter_ip>替换为仲裁节点的IP地址。

通过以上步骤,你应该能够在Linux上成功搭建一个MongoDB复制集。

0
看了该问题的人还看了