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

[经验分享] mysql集群2-双主故障转移keepalived

[复制链接]

尚未签到

发表于 2015-11-19 14:20:03 | 显示全部楼层 |阅读模式
Mysql双主故障转移

架构图
DSC0000.jpg
说明:
Mysql1(.3)已存在使用中数据库实例已经开始binlog
Mysql2(.4)后添加.3冷备还原

目的:
实现异常宕机或mysql服务异常中断时正常提供对外服务
缺点:正常情况下只有一台服务器提供服务,当出现故障时候才会转移
不可用情况:服务器hang
环境:
264centos6.3虚拟机部署mysql5.6.19serverrpm安装包

实施步骤:

  • 配置双主备份

  • 首先配置主从见文档mysql读写分离
  • 授权mysql1访问mysql2的权限
    Mysql2
    grant  all privileges on *.* to 'backup'@'192.168.137.3' identified by 'backup'; flush privileges;
    show master status;--记下fileposition
    mysql1
    change master to master_host='192.168.137.4',master_user='backup',master_password='backup',master_log_file='mysql-bin.000002',master_log_pos=120;
    start slave;
    show slave status \G
    DSC0001.jpg

  • 安装编译keeepalived配置故障转移


  • 下载http://www.keepalived.org/download.html
    DSC0002.jpg
  • 解压tar -zxvf keepalived-1.2.13.tar.gz
  • 安装依赖软件包
yum -y install gcc gcc-c++ gcc-g77 ncurses-devel bisonlibaio-devel cmake libnl* libpopt* openssl-devel


  • cd keepalived-1.2.13
    ./configure--prefix=/usr/local/keepalived
    Make
    Make install
---同上分别在两台服务器上面安装

  • 配置keepalived,两台服务器
    Mysql2
  vi/usr/local/keepalived/etc/keepalived/keepalived.conf
  !Configuration File for keepalived

global_defs {
  router_id mysql-ha
}

vrrp_instance VI_1 {
   state BACKUP
   interface eth1
   virtual_router_id 201
   priority 90 #slave
   advert_int 1

   authentication {
       auth_type PASS
       auth_pass mysql
   }
   virtual_ipaddress {
       192.168.137.2
   }
}

virtual_server 192.168.137.2 3306 {
   delay_loop 2
   lb_algo rr
   lb_kind DR
   persistence_timeout 60
   protocol TCP
   real_server 192.168.137.4 3306 {
       weight 1
       notify_down /usr/local/keepalived/etc/keepalived/mysql.sh
       TCP_CHECK {
           connect_port 3306
           connect_timeout 3
           nb_get_retry 2
           delay_before_retry 1
       }
   }
}
Mysql1
修改interface eth1  interface eth0
    DSC0003.jpg prority100
       real_server192.168.137.1
Mysql1修改完后如下
! Configuration File for keepalived

global_defs {
  router_id mysql-ha
}

vrrp_instance VI_1 {
   state BACKUP
   interface eth0
   virtual_router_id 201
   priority 100 #master
   advert_int 1
   nopreempt #
   authentication {
       auth_type PASS
       auth_pass mysql
   }
   virtual_ipaddress {
       192.168.137.2
   }
}

virtual_server 192.168.137.2 3306 {
   delay_loop 2
   lb_algo rr
   lb_kind DR
   persistence_timeout 60
   protocol TCP
   real_server 192.168.137.3 3306 {
       weight 1
       notify_down /usr/local/keepalived/etc/keepalived/mysql.sh
       TCP_CHECK {
           connect_port 3306
           connect_timeout 3
           nb_get_retry 2
           delay_before_retry 1
       }
   }
}

  • 配置停止脚本(两台都需要)
    Mysql.sh


#!/bin/bash
pkill keepalived



  • 两台主机上面启动keepalived
    /usr/local/keepalived/sbin/keepalived -f/usr/local/keepalived/etc/keepalived/keepalived.conf -D
    DSC0004.jpg
到这里keepalived已经配置完成

  • 测试故障转移
Start.sh
DSC0005.jpg

  • Mysql1服务停止
    DSC0006.jpg

可以看到mysql1服务停止后可以正常使用


  • 启动mysql1停止mysql2服务
    启动myslq1
DSC0007.jpg

停止mysql2
DSC0008.jpg

可以看到刚才mysql服务是在mysql2上面查询时报错然后再次查询就正常了没有一次已经实现故障转移


  • Myslq1服务器异常中断
    DSC0009.jpg
    DSC00010.jpg
    可以看到同上

  • 网络故障
    DSC00011.jpg

    服务在mysql2上面跑停止mysql1时没有影响,当停止mysql2的时候会发出错误然后再次执行正常已经转移到服务已经转移到mysql1上面,现在启动mysql2,我们已经确定服务是在mysql1上面了

  • 停止mysql2网卡模拟网络故障
    DSC00012.jpg
    可以看到mysql2网卡故障没有任何影响
  • 启动mysql2网卡,停掉mysql1
    DSC00013.jpg
    已经自动转移到了mysql2

    停止正在服务的mysql1后再mysql2上面插入数据再启动mysql1
    DSC00014.jpg
    可以看到数据正常同步

    当正在使用的服务器断网时候会出现无法使用,需要重启另外一台服务器的mysql服务即可正常
    DSC00015.jpg


    在写入数据时候突然断网的时候不是很稳定有时候断一下连接正常,有时候需要重启服务
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-141218-1-1.html 上篇帖子: nginx+keepalived做负载均衡解决方案 下篇帖子: keepalived之虚拟ip应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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