mysql主从 副本集_MongoDB之主从复制和副本集(四)

本文介绍了MongoDB的主从复制和副本集配置,主从复制用于读写分离,但不支持自动故障转移。而副本集提供数据冗余和自动故障转移,当主节点失败时,从节点能自动晋升为主节点。配置包括设置不同节点的配置文件,初始化副本集并设置成员优先级。在测试中,主节点故障后,从节点能够接管,重启主节点后仍保持主状态。
摘要由CSDN通过智能技术生成

简单主从复制

采用一主一从或一主多从的布署模式,可以将读写分离开来,提高数据库的可用性,不过mongodb的主从模式并不能在主节点崩溃后,从节点替换主节点的工作,一般可以在开发阶段使用。

实现步骤

设置配置文件

# mongodb.conf1 # 主节点

dbpath=/var/lib/mongodb1 # 设置数据文件

#where to log

logpath=/var/log/mongodb/mongodb1.log # 设置日志文件

logappend=true

bind_ip = 127.0.0.1,192.168.1.21 # 设置ip

port = 27018 # 设置port

journal=true

master = true # 设置主节点

# mongodb.conf2 # 从节点

dbpath=/var/lib/mongodb2 # 设置数据文件

#where to log

logpath=/var/log/mongodb/mongodb2.log # 设置日志文件

logappend=true

bind_ip = 127.0.0.1,192.168.1.21 # 设置ip

port = 27019 # 设置port

journal=true

slave = true # 设置从节点

source = 192.168.1.21:27018 # 指定主节点

使用配置文件启动

# 启动主节点

mongod -f /etc/mongodb.conf1 &

# 启动从节点

mongod -f /etc/mongodb.conf2 &

测试发现,从节点可读不可写,主节点杀死后,从节点不能代替主节点。

副本集

定义:复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性。

特点:

主备节点存储数据,仲裁节点不存储数据。客户端同时连接主节点与备节点,不连接仲裁节点。

所有节点分成3类,主节点,从节点和仲裁节点。

默认设置下,主节点提供所有增删查改服务,备节点不提供任何服务。但是可以通过设置使备节点提供查询服务;

自动故障转移

自动恢复

实现步骤

设置三份配置文件,分别为主节点、从节点、仲裁节点配置

# mongodb.conf

dbpath=/var/lib/mongodb # 数据文件

logpath=/var/log/mongodb/mongodb.log # 日志文件

pidfilepath=/var/lib/mongodb/mongodb.pid # 进程文件

logappend=true # 添加方式

replSet=name # 设置副本集名称

bind_ip=192.168.1.21 # 绑定ip

port=27017 # port

fork=true # 后台运行

noprealloc=true

# mongodb.conf1

dbpath=/var/lib/mongodb1 # 数据文件

logpath=/var/log/mongodb/mongodb1.log # 日志文件

pidfilepath=/var/lib/mongodb/mongodb1.pid # 进程文件

logappend=true # 添加方式

replSet=name # 设置副本集名称

bind_ip=192.168.1.21 # 绑定ip

port=27018 # port

fork=true # 后台运行

noprealloc=true

# mongodb.conf2

dbpath=/var/lib/mongodb2 # 数据文件

logpath=/var/log/mongodb/mongodb2.log # 日志文件

pidfilepath=/var/lib/mongodb/mongodb2.pid # 进程文件

logappend=true # 添加方式

replSet=name # 设置副本集名称

bind_ip=192.168.1.21 # 绑定ip

port=27019 # port

fork=true # 后台运行

noprealloc=true

启动节点

mongo -f /etc/mongodb.conf

mongo -f /etc/mongodb1.conf

mongo -f /etc/mongodb2.conf

配置节点

mongo ip:port

use admin

fuben={ _id:"name", members:[ {_id:0,host:‘192.168.1.21:27017‘,priority:2}, {_id:1,host:‘192.168.1.21:27018‘,priority:1},

{_id:2,host:‘192.168.1.21:27019‘,arbiterOnly:true}] };

rs.initiate(fuben)

参数:

priority:优先级

arbiterOnly:仲裁节点

有时报错

"errmsg" : "couldn‘t initiate : member 192.168.1.21:27018 has data already, cannot initiate set. All members except initiator must be empty."

# 需要清空数据库,将数据库文件都删除

生效后,从节点目前是不允许读写的,设置:

# 登录从节点

rs.slaveOk();

杀死主节点,可以看到从节点变为主节点,重新启动主节点后,主节点还是主节点,不会变为从节点(老大永远是老大);

参考:

原文:https://www.cnblogs.com/cwp-bg/p/9476314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值