创建三个目录
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({})