关于mysql主从架构master宕机后,请求转移问题解决办法
mysql架构:一主一从
问题一:有两台mysql数据库,已做好主从。如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办?
答:将前端需要数据库处理的请求转移到slave机上。
问题二:怎么转移?
答:
方法一:如果业务比较简单,只通过一个或很少的数据库连接文件连接后台mysql数据库,可直接修改连接文件代码的连接IP为slave机IP。
方法二:如果主从架构比较复杂,可将其升级为MHA架构自动实现故障转移,具体见:https://www.cnblogs.com/dannylinux/p/8033318.html
方法三:如果业务比较复杂,涉及很多连接问题,去手动修改代码连接文件很麻烦。这时就可以通过iptables防火墙转发规则实现了。如下:
前端服务器:
公网IP:12.1.1.1
提供WEB服务
master机:
公网IP:无
内网IP:13.1.1.1
系统:云服务器Centos 7
mysqld端口:3306
slave机:
公网IP:无
内网IP:13.1.1.2
系统:云服务器Centos 7
mysqld端口:3306
实验开始
两台服务器数据主从运行顺利,slave机能及时同步数据。假设突发情况导致master服务器宕机。
前端web服务器上
1.开启转发
vim /etc/sysctl.conf
net.ipv4.ip_forward =
2.添加iptables防火墙端口转发规则
iptables -t nat -A PREROUTING -p tcp --dport -j DNAT --to-destination 13.1.1.2:
#路由前,将所有对3306端口的请求都转发到13.1.1.2的3306端口 iptables -t nat -A POSTROUTING -d 13.1.1.2 -p tcp --dport -j SNAT --to-source 12.1.1.1
#路由后,将IP为内网13.1.1.,端口为3306的返回请求源地址转换为公网IP12.1.1.
解析:
PREROUTING
当外网的数据包进入到内网时,需要修改数据包中的公网 IP 为内网的主机 IP,这种 DNAT 的行为规则在 PREROUTING 链里添加。
POSTROUTING
包含有SNAT源地址转换的行为规则,把内网地址转换成公网地址。
SNAT 和 DNAT:
SNAT 和 DNAT 是 iptables 中使用 NAT 规则相关的的两个重要概念。
1).内网主机访问外网而经过路由时,源 IP 会发生改变,这种变更行为就是 SNAT;
2).外网的数据经过路由发往内网主机时,数据包中的目的 IP (路由器上的公网 IP) 将修改为内网 IP,这种变更行为就是 DNAT 。
PREROUTING 、 POSTROUTING与SNAT 、DNAT对应关系:
SNAT 操作对应链 POSTROUTING
DNAT 操作对应链 PREROUTING
3.如果master服务恢复,再重新同步数据即可
关于mysql主从架构master宕机后,请求转移问题解决办法的更多相关文章
- 实验:zk master宕机后,临时节点在新的master上是否存在,结果出人意料
一.实验 实验说明:3台zk集群,主要验证:master上的客户端,在master上建立临时节点,当master宕机时,其他follower选为主后,临时节点是否存在. 主要是通过此来验证,基于zk的 ...
- Mysql主从架构报错-Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work...
在搭建Mysql主从架构过程中,由于从服务器是克隆的主服务器系统,导致主从mysql uuid相同, Slave_IO无法启动,报错如下: The slave I/O thread stops bec ...
- MySQL-技术专题-MySQL主从架构以及[半同步机制]模式大全
MySQL的主从复制 一般在大规模的项目上,都是使用MySQL的复制功能来创建MySQL的主从集群的. 主要是可以通过为数据库服务器配置一个或多个备库的方式来进行数据同步. 复制的功能不仅有利于构建高 ...
- MySQL 主从架构配置详解
无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...
- 使用Innobackupex快速搭建(修复)MySQL主从架构
MySQL的主从搭建大家有很多种方式,传统的mysqldump方式是很多人的选择之一.但对于较大的数据库则该方式并非理想的选择.使用Xtrabackup可以快速轻松的构建或修复mysql主从架构.本文 ...
- Mysql主从架构
Mysql主从架构 1. 克隆虚拟机 克隆的虚拟机的网络适配,使得虚拟机可以进入局域网 vi /etc/sysconfig/network-scripts/ifcfg-eth0 删除 HWADDR所在 ...
- mysql group replication 主节点宕机恢复
一.mysql group replication 生来就要面对两个问题: 一.主节点宕机如何恢复. 二.多数节点离线的情况下.余下节点如何继续承载业务. 在这里我们只讨论第一个问题.也就是说当主结点 ...
- MySQL主从架构之Master-Slave主从同步
MySQL复制 MySQL复制是指将主库上的DDL和DML操作通过二进制日志传到从库上,使主库和从库上的数据保持同步 复制原理: 主服务器将更新写入二进制日志文件,并维护文件的一个索引来跟踪日志循环. ...
- MySQL主从架构配置
MySQL主从架构配置有两台MySQL数据库服务器master和slave,master为主服务器,slave为从服务器,初始状态时,master和slave中的数据信息相同,当master中的数据发 ...
随机推荐
- 测试一波SpringBoot的HTTP吞吐量
本来,其实就我个人而言现在很少去弄性能这一块的阵地了,主要在做设计与架构,不过前几天刚刚关注公众号的罗哥给我抛了关于性能方面的问题. 一个问题立马引起了我的兴趣,太久没弄性能方面的事情了,所以在隔天有 ...
- JSON WEB TOKEN(JWT)的分析
JSON WEB TOKEN(JWT)的分析 一般情况下,客户的会话数据会存在文件中,或者引入redis来存储,实现session的管理,但是这样操作会存在一些问题,使用文件来存储的时候,在多台机器上 ...
- webpack 4 简单介绍
webpack是什么? webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler). 为什么要使用webpack呢? 随着web技术的发展,前端开发不再仅仅是 ...
- ButterKnife注解式绑定控件
Butter Knife Android为控件设计的注解绑定库. github地址:https://github.com/JakeWharton/butterknife 添加依赖:(具体看github ...
- UE3客户端加入DS过程
拉起DS进程 客户端将比赛地图及相关参数发送给ZoneSvr请求开赛,收到消息后,ZoneSvr会分配一个ip和端口号,并与客户端发过来的地图及其他参数,来构建一个命令行来拉起一个DS进程, DS启动 ...
- c/c++ llinux epoll系列4 利用epoll_wait实现非阻塞的connect
llinux epoll系列4 利用epoll_wait实现非阻塞的connect connect函数是阻塞的,而且不能设置connect函数的timeout时间,所以一旦阻塞太长时间,影响用户的体验 ...
- python中创建虚拟环境
# virtualenv 虚拟环境安装 pip install virtualenv # 创建虚拟环境 virtualenv [虚拟环境名称] # 进入虚拟环境 windows : 进入 ...
- easyui中datagrid+layout布局
1.掌握layout布局 首先,layout布局的具体使用可参考官网http://www.jeasyui.net/plugins/162.html layout布局分为东南西北中五个区域,如图我们将其 ...
- Eclipse编写代码时设置属于自己的注释
翻看硬盘文件,偶然发现以前存的这么一个小操作,给大家分享一下 1.打开Eclipse,按照以下步骤进行设置: Window -->Preferences->Java->Editor- ...
- gradlew和gradle的区别
概念理解 gradlew就是对gradle的包装和配置,gradlew是gradle Wrapper,Wrapper的意思就是包装. 因为不是每个人的电脑中都安装了gradle,也不一定安装的版本是要 ...