Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 639|回复: 0

关于mysql主从架构master宕机后,请求转移问题解决办法

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-9-4 17:54:59 | 显示全部楼层 |阅读模式

    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
    #路由前,将所有对3306端口的请求都转发到13.1.1.2的3306端口
    
    iptables -t nat -A POSTROUTING -d 13.1.1.2 -p tcp --dport 3306 -j SNAT --to-source 12.1.1.1
    #路由后,将IP为内网13.1.1.2,端口为3306的返回请求源地址转换为公网IP12.1.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服务恢复,再重新同步数据即可

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 01:47 , Processed in 0.057350 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表