数据库集群系列(十三):结合Keepalived实现MySQL 5.7数据库集群的故障转移

2024年 7月 20日 88.8k 0

一、基本环境

    存在俩台Mysql数据库服务器,采用双Master方式形成数据库集群。

需要实现任意宕掉其中一台服务器,不影响系统运行。

    Master-1:192.168.1.137

    Master-2:192.168.1.138

    集群IP:192.168.1.88

通过Keepalived可实现传统方式或者容器方式的故障转移。

二、Master-1配置

1、安装与配置Mysql双主模式集群(略);

2、安装Keepalived高可用服务(略);

3、修改Keepalived配置文件并重启:

    vim keepalived.conf

    重点关注:修改网卡接口、启动优先级权重

    #ConfigurationFile for keepalived
    global_defs {
    notification_email { ######定义接受邮件的邮箱
    wangjj@hrloo.com
    }
    notification_email_from jiankong@staff.tuge.com ######定义发送邮件的邮箱
    smtp_server mail.tuge.com
    smtp_connect_timeout 10
    }
    vrrp_script check_mysql { ######定义监控mysql的脚本
    script "/root/check_mysql.sh"
    interval 2 ######监控时间间隔
    weight 2 ######负载参数
    }
    vrrp_instance vrrptest { ######定义vrrptest实例
    state BACKUP ######服务器状态
    interface ens33 ######使用的接口
    virtual_router_id 51 ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换
    priority 100 ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
    advert_int 1 ######服务器之间的存活检查时间
    authentication {
    auth_type PASS ######认证类型
    auth_pass ufsoft ######认证密码,一组lvs 服务器的认证密码必须一致
    }
    track_script { ######执行监控mysql进程的脚本
    check_mysql
    }
    virtual_ipaddress { ######虚拟IP地址
    192.168.1.88
    }
    }

        systemctl restart keepalived.service

        当俩台服务器的keepalived都配置完成之后,虚拟IP

    3、编写Mysql状态监测脚本

        注意脚本中的变量符号$

      MYSQL=/usr/bin/mysql
      MYSQL_HOST=127.0.0.1
      MYSQL_USER=root
      MYSQL_PASSWORD=123456
      MYSQL_PORT=3307




      $MYSQL -h $MYSQL_HOST -u $MYSQL_USER -P$MYSQL_PORT -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
      if [ $? == 0 ]
      then
      echo " $host mysql login successfully "
      exit 0
      else
      #echo " $host mysql login faild"
      systemctl stop keepalived.service
      exit 2
      fi

      三、Master-2配置

      1、安装与配置Mysql双主模式集群(略);

      2、安装Keepalived高可用服务(略);

      3、修改Keepalived配置文件并重启

        #ConfigurationFile for keepalived
        global_defs {
        notification_email { ######定义接受邮件的邮箱
        wangjj@hrloo.com
        }
        notification_email_from jiankong@staff.tuge.com ######定义发送邮件的邮箱
        smtp_server mail.tuge.com
        smtp_connect_timeout 10
        }
        vrrp_script check_mysql { ######定义监控mysql的脚本
        script "/root/check_mysql.sh"
        interval 2 ######监控时间间隔
        weight 2 ######负载参数
        }
        vrrp_instance vrrptest { ######定义vrrptest实例
        state BACKUP ######服务器状态
        interface ens33 ######使用的接口
        virtual_router_id 51 ######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换
        priority 50 ######服务启动优先级,值越大,优先级越高,BACKUP 不能大于MASTER
        advert_int 1 ######服务器之间的存活检查时间
        authentication {
        auth_type PASS ######认证类型
        auth_pass ufsoft ######认证密码,一组lvs 服务器的认证密码必须一致
        }
        track_script { ######执行监控mysql进程的脚本
        check_mysql
        }
        virtual_ipaddress { ######虚拟IP地址
        192.168.1.88
        }
        }

        4、编写Mysql状态监测脚本,同Master-1,略。

            chmod  +x chk_mysql.sh

          [root@DB-Master bin]# ./chk_mysql.sh
          mysql login successfully

          数据库集群系列(十三):结合Keepalived实现MySQL 5.7数据库集群的故障转移-1

          四、验证配置

              确保俩台服务器上的Master均为运行状态;

              然后任意终止一台服务器上的MySQL服务。

          数据库集群系列(十三):结合Keepalived实现MySQL 5.7数据库集群的故障转移-2

              可以发现基本在3s内可以恢复正常,不影响业务系统的正常使用。

          数据库集群系列(十三):结合Keepalived实现MySQL 5.7数据库集群的故障转移-3

          相关文章

          Oracle如何使用授予和撤销权限的语法和示例
          Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
          下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
          社区版oceanbase安装
          Oracle 导出CSV工具-sqluldr2
          ETL数据集成丨快速将MySQL数据迁移至Doris数据库

          发布评论