MongoDB复制集的配置
- mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。
- mongodb各个节点常见的搭配方式为:一主一从、一主多从。
- 主节点记录在其上的所有操作oplog,从节点定期轮询主节点获取这些操作,然后对自己的数据副本执行这些操作,从而保证从节点的数据与主节点一致。
副本集特征:
- N 个节点的集群
- 任何节点可作为主节点
- 所有写入操作都在主节点上
- 自动故障转移
- 自动恢复
在一台机器上部署三个节点的复制集
创建数据库和日志目录
- 分别在 /var/lib/和 /var/log/下面创建三个文件夹,分别用来存放MongoDB的数据库和日志
cd /var/lib
mkdir mongodb1 mongodb2 mongodb3
cd /var/log
mkdir mongodb1 mongodb2 mongodb3
创建配置文件
- 然后在 /etc/下面创建三个配置文件,mongodb1.cnf,mongodb2.cnf, mongodb3.cnf。
将下面内容添加进去 三个配置文件均要添加,bind_ip和replSet 需要一致
vi mongodb1.cnf
journal=true
bind_ip=127.0.0.1
port=27018
httpinterface=true
rest=true
dbpath=/var/lib/mongodb1
fork=true
logpath=/var/log/mongodb1/mongodb1.log
profile=1
slowms=1
replSet=hxf
vi mongodb2.cnf
journal=true
bind_ip=127.0.0.1
port=27019
httpinterface=true
rest=true
dbpath=/var/lib/mongodb2
fork=true
logpath=/var/log/mongodb2/mongodb2.log
profile=1
slowms=1
replSet=hxf
vi mongodb3.cnf
journal=true
bind_ip=127.0.0.1
port=27020
httpinterface=true
rest=true
dbpath=/var/lib/mongodb3
fork=true
logpath=/var/log/mongodb3/mongodb3.log
profile=1
slowms=1
replSet=hxf
- 参数:
bind_ip:mongodb 所绑定的ip地址
port:mongodb进程所使用的端口号,默认为27017
dbpath:数据存放目录
logpath:日志存放路径
replSet:replica set的名字
fork:以后台方式运行进程
smallfiles:当提示空间不够时添加此参数
oplogSize:mongodb操作日志文件的最大大小。单位为Mb,默认为硬盘剩余空间的5%
启动mongodb
- 进入到/usr/bin下面
cd /usr/bin
./mongod -f /etc/mongodb1.cnf
./mongod -f /etc/mongodb2.cnf
./mongod -f /etc/mongodb3.cnf
- 出现如下提示说明启动成功
about to fork child process,waiting until server is ready for connection.
forked process:7189
child process started successfully.parent exiting
连接到MongoDB
- 可以通过客户端连接mongodb,也可以直接在三个节点中选择一个连接mongodb。
./mongo 127.0.0.1:27018 #ip和port是某个节点的地址
配置文件变量:
cfg={"_id":"hxf",
"members":[{"_id":0,"host":"127.0.0.1:27018"},
{"_id":1,"host":"127.0.0.1:27019"},
{"_id":2,"host":"127.0.0.1:27020"}]}
初始化:
rs.initiate(cfg)
{ok:1} #1表示成功
查看复制集状态
hxf :prtmary> rs.status()