zoukankan      html  css  js  c++  java
  • 基于keepalived的MySQL高可用

    基于keepalived的MySQL高可用

    MySQL双主模型,keepalived提供高可用服务。主服务器宕机时,VIP切至备服务器,由备服务提供主服务器的读写任务。原先的主服务器恢复后,角色切换为备服务器,提供热备功能。

    架构

    M1:192.168.31.140(master)
    M2:192.168.31.130(backup)
    VIP:192.168.31.150
    

    MySQL MM模型

    配置略去,两台MySQL都需要对允许访问的客户端用户地址进行授权

    keepalived 配置

    安装:两边直接使用rpm安装即可
     [root@baseos-1_192.168.31.140 ~]# yum install -y keepalived
    
    配置:
    [root@baseos-1_192.168.31.140 ~]# vim /etc/keepalived/keepalived.conf 
    ! Configuration File for keepalived
    global_defs {
       notification_email {
         acassen@firewall.loc
         failover@firewall.loc
         sysadmin@firewall.loc
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL
    }
    vrrp_script check_mysqld { #调用MYSQL监控脚本的函数
        script "/data/sh/mysqld_check.sh"
        interval 1
        weight 1
    }
    vrrp_instance VI_1 {
        state BACKUP 			#两台主机都写上BACKUP。
        interface eth0			#vip对外的网络接口,机子上是哪个就写哪个。
        virtual_router_id 10	#标识号。两台主机要统一起来。
        priority 100			#优先级,优先级高的为主机。
        advert_int 1
        nopreempt				#不抢占模式,在优先级高的那台设置此参数,一般在主上设置,主的优先级高。
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        track_script { 
            check_mysqld 
        }
        virtual_ipaddress {
            192.168.31.150/24 dev eth0
        }
    }
    
    MySQL监控脚本:
    [root@baseos-1_192.168.31.140 ~]# vim /data/sh/mysqld_check.sh 
    #!/bin/bash
    KeepAliveLog="/data/logs/keepalive_mysql_check.log"
    MyAlive=$(/usr/local/mysql/bin/mysqladmin  -uroot -p`cat /data/save/mysql_root` ping 2> /dev/null | grep -i -c alive)
    if [ "X$MyAlive" != "X1" ] ; then
        echo "[`date +%F" "%T`] Wanning,mysql is not alive." >> $KeepAliveLog
        /etc/init.d/keepalived stop &> /dev/null
        echo "[`date +%F" "%T`] Service keepalive has being stopd." >> $KeepAliveLog
    fi
    
    查看主服务IP地址
    [root@baseos-1_192.168.31.140 ~]# ip add
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:ef:84:a3 brd ff:ff:ff:ff:ff:ff
        inet 192.168.31.140/24 brd 192.168.31.255 scope global eth0
        inet 192.168.31.150/24 scope global secondary eth0
        inet6 fe80::20c:29ff:feef:84a3/64 scope link 
           valid_lft forever preferred_lft forever
    
    登录验证
    [root@baseos-1_192.168.31.140 ~]# mysql -uroot -p4399 -h 192.168.31.150
    ***
    (root@192.168.31.150) [(none)] show variables like '%hostname%';
    +---------------+----------+
    | Variable_name | Value    |
    +---------------+----------+
    | hostname      | baseos-1 |
    +---------------+----------+
    1 row in set (0.01 sec)
    
    主MySQL服务停止,查看从服务器IP地址,并登录验证
    # 主MySQL停服
    [root@baseos-1_192.168.31.140 ~]# /etc/init.d/mysqld stop
    Shutting down MySQL... SUCCESS! 
    
    # 从服务查看IP地址
    [root@baseos-2_192.168.31.130  ~]# ip add
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:61:96:62 brd ff:ff:ff:ff:ff:ff
        inet 192.168.31.130/24 brd 192.168.31.255 scope global eth0
        inet 192.168.31.150/24 scope global secondary eth0
        inet6 fe80::20c:29ff:fe61:9662/64 scope link 
           valid_lft forever preferred_lft forever
    
    # 授权客户端登录验证
    [root@baseos-1_192.168.31.140 ~]# mysql -uroot -p4399 -h 192.168.31.150
    ***
    (root@192.168.31.150) [(none)] show variables like '%hostname%';
    +---------------+-------------+
    | Variable_name | Value       |
    +---------------+-------------+
    | hostname      | baseos-2 |
    +---------------+-------------+
    1 row in set (0.00 sec)
  • 相关阅读:
    mysql日常~gh-ost使用
    redis基础篇~哨兵
    zeppelin-0.6.0安装配置
    spark 好文链接
    spark API 介绍链接
    solr5.5 基于内置jetty配置 Ubuntu
    Gollum 安装笔记
    手机版测试
    win7 eclipse 调试storm
    (转)Storm UI 解释
  • 原文地址:https://www.cnblogs.com/wshenjin/p/7093754.html
Copyright © 2011-2022 走看看