MongoDB Replica Set 单节点部署

1,021 阅读1分钟

MongoDB Replica Set 单节点部署

在某贴情况下需要使用复制集,但是不想使用多个Node,可以使用如下部署方式。

配置

使用docker-compose部署,简单方便。 以下是docker-compose.yaml配置,

version: "3"
services:
  main:
    image: mongo:4.4
    environment:
      MONGO_INITDB_ROOT_USERNAME: [Your Username]
      MONGO_INITDB_ROOT_PASSWORD: [Your Password]
    ports:
      - 27017:27017
    # 可选的数据挂载
    volumes:
      - /data/mongo/db:/data/db
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--auth","--bind_ip_all", "--replSet", "rs0" ]

需要注意的点:

  • --auth 开启认证,否则数据库裸奔
  • --bind_ip_all 允许访问的IP,全部或指定IP--bind-ip
  • rs0 为复制集名称,连接时可能会用上

使用docker-compose -f [Your 'docker-comse.yaml' path] up -d

启动后进入mongo shell,然后执行初始化集群,初始化完成后查看集群状态,如果初始化时填错配置,可重新初始化集群

数据库验证

use admin;
db.auth('Username','Password')

初始化集群

注意host为本机地址

rs.initiate({
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "127.0.01:27017" }
      ]
   }
)

查看集群状态

rs.status()

重新初始化

# 在mongo shell 里,逐行执行以下命令
rsconf = rs.conf();
rsconf.members = [{_id: 0, host: "localhost:27017"}];
rs.reconfig(rsconf, {force: true});