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 = 1
2.添加iptables防火墙端口转发规则
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 13.1.1.2:3306 iptables -t nat -A POSTROUTING -d 12.1.1.1 -p tcp --dport 3306 -j SNAT --to 13.1.1.2:3306
3.如果master服务恢复,再重新同步数据即可