架构结构
各节点常见的搭配:
"""
一主 一从 一仲裁、
一主 多从 一仲裁、
一主 多从 多仲裁
"""
搭建复制集
采用单主机多端口的方式:
1.创建数据文件存放目录
一主两从一仲裁:
在MongoDB 文件里:
mkdir replication
cd replication
mkdir primary
mkdir secondary1
mkdir secondary2
mkdir arbitration
2.创建配置文件存放目录
在conf 文件里面创建replication_conf
先cd到conf 目录
mkdir replication_conf
cd replication_conf
3.创建日志存放目录,以及创建一主两从一仲裁的日志文件
cd 到logs 目录下:
mkdir replocation_logs
touch primary.log
touch secondary1.log
touch secondary2.log
touch arbiter.log
4.创建进程描述文件目录
cd 到mongodb 的目录
mkdir -p pids/replication_pid
5.分别对一主两从一仲裁节点的配置文件进行编辑
这里复制了mongodb.conf 的文件放在 replication_conf 里面作为主键
cd 到conf/replication_conf
vi primary.conf
写入:
dbpath=/Users/haoniao/code/Nosql/mongodb/replication/primary
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/replication_logs/primary.log
logappend=true
bind_ip_all=true
port=27117
fork=true
replSet=replications
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/replication_pid/primary.pid
oplogSize=1000
directoryperdb=true
========================
cd 到 replication_conf |
========================
cp primary.conf secondary1.conf
cp primary.conf secondary2.conf
cp primary.conf arbiter.conf
vi secondary1.conf
写入:
dbpath=/Users/haoniao/code/Nosql/mongodb/replication/secondary1
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/replication_logs/secondary1.log
logappend=true
bind_ip_all=true
port=27118
fork=true
replSet=replications
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/replication_pid/secondary1.pid
oplogSize=1000
directoryperdb=true
================================
vi secondary2.conf
====================
写入:
dbpath=/Users/haoniao/code/Nosql/mongodb/replication/secondary2
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/replication_logs/secondary2.log
logappend=true
bind_ip_all=true
port=27119
fork=true
replSet=replications
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/replication_pid/secondary2.pid
oplogSize=1000
directoryperdb=true
===========================
vi arbiter.conf
===============
写入
dbpath=/Users/haoniao/code/Nosql/mongodb/replication/arbitration
logpath=/Users/haoniao/code/Nosql/mongodb/data/logs/replication_logs/arbiter.log
logappend=true
bind_ip_all=true
port=27120
fork=true
replSet=replications
pidfilepath=/Users/haoniao/code/Nosql/mongodb/pids/replication_pid/arbiter.pid
oplogSize=1000
directoryperdb=true
6.启动服务,客户端连接,并做初始化
cd 到 mongodb路径
启动服务
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/replication_conf/primary.conf
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/replication_conf/secondary1.conf
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/replication_conf/secondary2.conf
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/replication_conf/arbiter.conf
查看是否启动:
ps -ef|grep mongod
启动成功后:
进入主重,
bin/mongo --port 27117
运行;
use admin
rs.initiate({
"_id":"replications",
"members":[
{"_id":0,"host":"127.0.0.1:27117","priority":3},
{"_id":1,"host":"127.0.0.1:27018","priority":1},
{"_id":2,"host":"127.0.0.1:27019","priority":2},
{"_id":5,"host":"127.0.0.1:27120","arbiterOnly":true},
]
});
然后有进入从节点
bin/mongo --port 27118
运行:
rs.slaveOk(true)
测试
关闭端口27117的服务后,是否?端口为27119的服务从节点自动切换为主节点
关闭
看它的端口号
ps -ef|grep mongod
kill 端口号 // 杀死第一个主节点
进入从节点27119
bin/mongo --port 27119
rs.isMaster() // 看一下主节点
如果主节点变成了27119则就成功了
----接下来恢复主节点--看是否可以恢复
开启主节点
bin/mongod -f /Users/haoniao/code/Nosql/mongodb/conf/replication_conf/primary.conf
bin/mongo --port 27117
rs.isMaster() // 看一下主节点
如果恢复了则成功了