雙主MySQL+keepalived高可用配置


部署雙節點雙主數據庫服務器mysql

分別在二台服務器上安裝mysql,要求同版本或主服務器比從服務器版本高。

主機mysql配置:

Vi /etc/my.cnf

[mysqld]

Log-bin=mysql-bin

Server-id=1

 

Service mysqld restart

Mysql –uroot –p

 

從mysql配置:

Vi /etc/my.cnf

[mysqld]

Log-bin=mysql-bin

Server-id=2

然后從主mysql導出數據,mysql –uroot –p dump –single-transaction *** > ***.sql

導入到從mysql數據庫:mysql –uroot –p  *** < ***.sql(***表示數據庫名)

從服務器:

 

可能遇到的問題:log-bin一定不是log_bin,並且位置在[mysqld]的里面。否則日志不能正常開啟。

 主服務器:

 

測試:

 

 

以下為部署keepalived雙主高可用:

二個服務器IP10.16.37.101,10.16.37.94,一個VIP10.16.37.200。

安裝keepalived:

下載keepalived-1.2.23.tar.gz

tar –xvf keepalived-1.2.23.tar.gz –C /opt

cd /opt/keepalived-1.2.23/

./configure prefix=/usr/local/keepalived

make & make install

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

vi /etc/keepalived/keepalived.conf

主配置:(10.16.37.101)

! Configuration File for keepalived

 

global_defs {

   notification_email {

     627885927@qq.com    #通知郵箱

   }

   notification_email_from 627885927@qq.com

   smtp_server 127.0.0.1       #表示發送email時使用的smtp服務器地址,這里可以用本地的sendmail來實現

   smtp_connect_timeout 30 #連接smtp超時時間

   router_id MySQL-ha    #一般為主機名

}

 

vrrp_instance VI_1 {

    state BACKUP   #都為BACKUP

    interface eth0   

    virtual_router_id 51

    priority 100     #權限100

    advert_int 1

    nopreempt         #不搶占

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.16.37.200   #虛擬IP地址,即VIP

    }

}

 

virtual_server 10.16.37.200 3306 {  #監控端口及配置

    delay_loop 2

    lb_algo wrr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

real_server 10.16.37.101 3306 {  #真實IP地址

        weight 3

        notify_down /usr/local/MySQL/bin/MySQL.sh #宕機腳本

        TCP_CHECK {

            connect_timeout 3

            connect_port 3306

        }

    }

}

從配置:(10.16.37.94)

! Configuration File for keepalived

 

global_defs {

   notification_email {

     627885927@qq.com    #通知郵箱

   }

   notification_email_from 627885927@qq.com

   smtp_server 127.0.0.1       #表示發送email時使用的smtp服務器地址,這里可以用本地的sendmail來實現

   smtp_connect_timeout 30 #連接smtp超時時間

   router_id Nginx-ha    #一般為主機名

}

 

vrrp_instance VI_1 {

    state BACKUP   #都為BACKUP

    interface eth0   

    virtual_router_id 51

    priority 90     #權限90

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.16.37.200   #虛擬IP地址,即VIP

    }

}

 

virtual_server 10.16.37.200 3306 {  #監控端口及配置

    delay_loop 2

    lb_algo wrr

    lb_kind DR

    persistence_timeout 60

    protocol TCP

real_server 10.16.37.94 3306 {  #真實IP地址

        weight 3

        notify_down /usr/local/MySQL/bin/MySQL.sh #宕機腳本

        TCP_CHECK {

            connect_timeout 3

            connect_port 3306

        }

    }

}

vi  /usr/local/MySQL/bin/MySQL.sh

#!/bin/bash

pkill keepalived

 

# chmod +x  /usr/local/MySQL/bin/MySQL.sh

 

測試:關閉一台服務器mysql,ps aux | grep keepalved查看keepalived是否自動關閉。注意防火牆和selinux的關閉!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM