搭建MongoDB Linux集群可以通过多种方式实现,以下是使用Docker容器搭建MongoDB主从复制集群的步骤:
创建一个名为docker-compose.yml的文件,并添加以下内容:
version: '3.8'
services:
mongo_primary:
image: mongo:latest
container_name: mongo_primary
ports:
- "27017:27017"
environment:
- mongo_initdb_root_username=root
- mongo_initdb_root_password=example
command: mongod --replset rs0 --bind_ip localhost,mongo_primary
mongo_secondary_1:
image: mongo:latest
container_name: mongo_secondary_1
depends_on:
- mongo_primary
environment:
- mongo_initdb_root_username=root
- mongo_initdb_root_password=example
command: mongod --replset rs0 --bind_ip localhost,mongo_secondary_1
mongo_secondary_2:
image: mongo:latest
container_name: mongo_secondary_2
depends_on:
- mongo_primary
environment:
- mongo_initdb_root_username=root
- mongo_initdb_root_password=example
command: mongod --replset rs0 --bind_ip localhost,mongo_secondary_2
mongo_arbitrer:
image: mongo:latest
container_name: mongo_arbitrer
depends_on:
- mongo_primary
environment:
- mongo_initdb_root_username=root
- mongo_initdb_root_password=example
command: mongod --replset rs0 --bind_ip localhost,mongo_arbitrer
在包含docker-compose.yml文件的目录中,运行以下命令以启动集群:
docker-compose up -d
这将启动三个容器:一个主节点(mongo_primary),两个从节点(mongo_secondary_1 和 mongo_secondary_2),以及一个仲裁者节点(mongo_arbitrer)。
一旦所有容器都启动,您需要进入主节点容器并初始化replica set。使用以下命令进入主节点容器:
docker exec -it mongo_primary mongo -u root -p example --authenticationdatabase admin
在MongoDB shell中,执行以下命令初始化replica set:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo_primary:27017" },
{ _id: 1, host: "mongo_secondary_1:27017" },
{ _id: 2, host: "mongo_secondary_2:27017" },
{ _id: 3, host: "mongo_arbitrer:27017", arbiterOnly: true }
]
})
初始化后,您可以通过运行以下命令来查看replica set的状态:
rs.status()
这将显示replica set中的节点以及它们的状态。
要连接到replica set,您可以使用以下连接字符串(假设您使用的是mongodb shell或mongodb compass):
mongodb://root:example@localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0
在该连接字符串中,replicaSet=rs0指定了 replica set的名称,必须与mongod.conf中的replSetName保持一致。
请注意,以上步骤是基于Docker容器的简化版集群搭建,实际生产环境中可能需要更多的配置和优化。此外,MongoDB的集群搭建还包括分片集群和配置服务器集群的搭建,这些内容超出了简单回答的范围,但可以参考MongoDB官方文档获取详细信息。