设为首页 收藏本站
查看: 885|回复: 0

[经验分享] Mysql 双主+keepalived 实现高可用及读写分离(一)

[复制链接]

尚未签到

发表于 2018-12-29 13:15:12 | 显示全部楼层 |阅读模式
目的:
解决 mysql数据库Master-Slave 单点故障问题。

实现方式:
1. Master-Master Replication 实现数据同步。
2.通过keepalived虚拟IP 从网络层实现单点故障时IP自动切换,从而实现高可用。
3.通过keepalived配置实现read读指向Slave节点,实现读写分离。

缺点:根据线上实际应用情况,只考虑单点网络故障及机器设备故障时虚拟ip自动切换(只切换一次)。不考虑mysql服务异常等情况,数据库异常可通过nagios等监控,防止多次来回切换,造成数据混乱!且故障节点恢复时,要人工操作及注意步骤。


Master-Master

1、使用两个MySQL数据库db01,db02,互为MasterSlave,即:
一边db01作为db02master,一旦有数据写向db01时,db02定时从db01更新
另一边db02也作为db01master,一旦有数据写向db02时,db01也定时从db02获得更新
(这不会导致循环,MySQL Slave默认不会记录Master同步过来的变化)
2、但从AppServer的角度来说,同时只有一个结点db01扮演Master,另外一个结点db02扮演Slave,不能同时两个结点扮演Master。即AppSever总是把write操作分配某个数据库(db01),除非db01 failed,被切换。
3、如果扮演Slave的数据库结点db02 Failed了:
a)此时appServer要能够把所有的read,write分配给db01read操作不再指向db02
b)一旦db02恢复过来后,继续充当Slave角色,并告诉AppServer可以将read分配给它了.
4、如果扮演Master的数据库结点db01 Failed
a)此时appServer要能够把所有的写操作从db01切换分配给db02,也就是切换Masterdb02充当
b)db01恢复过来后,充当Slave的角色,Masterdb02继续扮演。

具体配置如下:
测试环境简介:
1.10.10.10.40   mysql+keepalive
2.10.10.10.41   mysql+keepalive
3.写入VIP10.10.10.2140主,41
4.读取VIP10.10.10.44(41主,40)





1.mysql双主配置,此处简略,可参考网上主主同步配置。

Mysql配置文件重点简略如下:
log-bin=mysql-bin
binlog_format=mixed
server-id= 3(另一台的ID2

2.keepalived 配置方法
第一台(40):
global_defs {
     notification_email {
     ******@126.com
     }
     notification_email_from*****@126.com
     smtp_server 127.0.0.1
     smtp_connect_timeout 30
     router_id MySQL-ha
     }

vrrp_instance VI_1 {
     state BACKUP   #两台配置此处均是BACKUP
     interface p4p1 #注意网卡接口
     virtual_router_id 51
     priority 180   #优先级,另一台改为90
     advert_int 1
     nopreempt     #不主动抢占资源,只在优先级高的机器上设置即可,优先级低的机器不设置
     authentication {
       auth_type PASS
       auth_pass 1111
     }
     virtual_ipaddress {
        10.10.10.21     #此虚拟ip为写
     }
     }

vrrp_instance VI_2 {
     state BACKUP   #另一台配置为MASTER
     interface p4p1 #注意网卡接口
     virtual_router_id 44 #注意id和上面的不同
     priority 90 #优先级,另一台改为180
     advert_int 1
     authentication {
       auth_type PASS
       auth_pass 1111
     }
     virtual_ipaddress {
        10.10.10.44      #此虚拟ip为读
     }
   }

第二台(41
global_defs {
     notification_email {
     *********@126.com
     }
     notification_email_from ********@126.com
     smtp_server 127.0.0.1
     smtp_connect_timeout 30
     router_id MySQL-ha
     }

vrrp_instance VI_1 {
     state BACKUP   #两台配置此处均是BACKUP
     interface p4p1 #注意网卡接口
     virtual_router_id 51
     priority 90   #优先级,另一台改为180
     advert_int 1
     authentication {
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     10.10.10.21
     }
     }

vrrp_instance VI_2 {
     state MASTER   #用于mysql
     interface p4p1 #注意网卡接口
     virtual_router_id 44
     priority 180 #优先级,另一台改为90
     advert_int 1
     authentication {
     auth_type PASS
     auth_pass 1111
     }
     virtual_ipaddress {
     10.10.10.44      #用于mysql
     }
}




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657275-1-1.html 上篇帖子: 基于keepalived构建HA集群 下篇帖子: keepalived + mysql主从
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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