搭建 MongoDB 复制集

创建
阅读 20

创建三个目录

MongoDB 启动时,将使用一个目录存放所有的数据文件,分别为三个复制集节点创建存放数据的目录,

Linux / macOS

mkdir -p /data/db{1,2,3}
mkdir -p $PWD/db{1,2,3}

Windows

md c:\data\db1
md c:\data\db2
md c:\data\db3

创建三份配置文件

replSetName 设置相同,端口、日志文件配置不同的三个

端口 数据目录 配置文件 日志文件
28017 /Users/ryan/data/db1 /Users/ryan/data/mongod1.conf /Users/ryan/data/db1/mongo.log
28018 /Users/ryan/data/db2 /Users/ryan/data/mongod2.conf /Users/ryan/data/db2/mongo.log
28019 /Users/ryan/data/db3 /Users/ryan/data/mongod3.conf /Users/ryan/data/db3/mongo.log

配置文档 https://docs.mongodb.org/manual/reference/configuration-options/

# mongod1.conf

systemLog:
  logAppend: true
  path: /Users/ryan/data/db1/mongo.log

storage:
  dbPath: /Users/ryan/data/db1
  journal:
    enabled: true

processManagement:
  fork: true # fork and run in background

# network interfaces
net:
  port: 28018
  bindIp: 0.0.0.0

replication:
  replSetName: rs0
# mongod2.conf

systemLog:
  logAppend: true
  path: /Users/ryan/data/db2/mongo.log

storage:
  dbPath: /Users/ryan/data/db2
  journal:
    enabled: true

processManagement:
  fork: true # fork and run in background

# network interfaces
net:
  port: 28019
  bindIp: 0.0.0.0

replication:
  replSetName: rs0
# mongod3.conf

systemLog:
  logAppend: true
  path: /Users/ryan/data/db3/mongo.log

storage:
  dbPath: /Users/ryan/data/db3
  journal:
    enabled: true

processManagement:
  fork: true # fork and run in background

# network interfaces
net:
  port: 28020
  bindIp: 0.0.0.0

replication:
  replSetName: rs0

配置复制集

方法一

mongo localhost:28018

hostname 为当前主机的主机名,通过 hostname 命令获取

rs.initiate()
rs.add('hostname:28019')
rs.add('hostname:28020')

方法二

rs.initiate({
  _id: 'rs0',
  members: [
    {
      _id: 0,
      host: 'localhost:28018',
    },
    {
      _id: 1,
      host: 'localhost:28019',
    },
    {
      _id: 2,
      host: 'localhost:28020',
    },
  ],
})

验证

主节点写入

mongo localhost:28018
db.test.insert({ a: 1 })
db.test.insert({ a: 2 })

从节点读取

mongo localhost:28018
rs.secondaryOk()

db.test.find({})

本文链接 https://www.yidiankuaile.com/post/setup-mongodb-replication