阿里雲ECS服務器上搭建keepalived+mha+mysql5.6+gtid+一主兩從+腳本判斷架構踩的坑

    最近,公司項目搭建了一套後端數據庫架構,不是在RDS,是在阿里雲的ECS服務器上搭建keepalived、mha、mysql5.六、gtid、一主兩從架構,目前尚未實現讀寫分離,之後架構升級,可能代碼裏會實現讀寫分離,或者加入入mycat等中間件,也可能進行分庫分表;架構不是最新,不少工具你們都見過,只是在不一樣的環境,不一樣的狀況下,趕上的問題不一樣,也踩了不少坑,若有些可能沒在阿里雲上,有的可能數據庫版本不同等,因此更你們分享一下經驗。html

遇到的問題較多,主要問題是:

一、mha必須是0.56版本才支持GTIDnode

二、阿里雲ECS不支持浮動IPmysql

三、阿里雲服務器上keepalived只能設置單播sql

四、keepalived配置文件里加腳本判斷mysql是否啓動須要首尾寫好配置文件數據庫

五、注意keepalived的配置文件,以防主庫恢復後IP漂移回去後端

大概架構:

一、在三臺服務器上安裝mysql主從複製

主從複製一主兩從,用GTID特性,半同步複製能保證一致性好點,和主從複製方便點。服務器

a、配置每一個節點配置文件my.cnf
添加以下
log-bin=mysql-bin
server-id=3
gtid_mode=ON
log_slave_updates
enforce_gtid_consistency
(注:除了server-id每一個節點不同,其它都同樣,也必須加,以通常主從複製區別,多了下面的3個參數)
b、主節點添加複製帳號
grant replication slave  on *.* to 'backup'@'192.168.10.%'identified by'backup';
c、從節點執行
change master  to  master_host='192.168.10.142', master_user='backup', master_password='backup',master_port=3306,master_auto_position=1;
start slave;

 

二、在三臺服務器上安裝mha node 在第三臺服務器上安裝mha master

下載連接:連接:http://pan.baidu.com/s/1c2lKbOs 密碼:bfqd網絡

安裝方式參照:http://www.cnblogs.com/galengao/p/5764163.html架構

三、在主庫和備庫上面安裝keepalived

 安裝方式參照:http://www.cnblogs.com/galengao/p/5764163.htmlide

能夠選擇安裝最新版本

安裝依賴包
yum install popt-static kernel-devel make gcc openssl-devel lftp libnl* popt*

安裝keepalived
wget  http://www.keepalived.org/software/keepalived-1.2.4.tar.gz
tar zxvf keepalived-1.2.4.tar.gz
cd keepalived-1.2.4
./configure --prefix=/usr/local/keepalived
make
make install

將keepalived作成啓動服務,方便管理
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/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/

service keepalived start

踩到的問題處理

一、mha必須是0.56版本才支持GTID

從我給的連接下載0.56的版本,或者網上找的來安裝

二、阿里雲ECS不支持浮動IP

要注意:阿里雲的上ECS服務器跟咱們本身的虛擬機不同,它不支持浮動IP的

a、阿里雲上提工單,讓其開通havip,高可用虛擬ip

b、到專有VPC網絡的高可用虛擬IP,點擊建立高可用虛擬IP出現以下圖

如何在出現的虛擬ip點管理,把你要漂移的那兩臺服務器綁定在上面:

 

三、阿里雲服務器上keepalived只能設置單播

按照上面模式作了keepalived仍是不能正常運行,由於在阿里雲私有網絡裏只能設置單播,以下配置文件裏的紅字,畫了的是IP地址,從哪臺飄到哪臺,另一臺的配置IP是相反的:

 

四、keepalived配置文件里加腳本判斷mysql是否啓動須要首尾寫好配置文件

由於咱們不可是服務器死了進行IP漂移,還要即便數據庫死了也要漂移,因此只能寫腳本去判斷,腳本在配置文件裏要注意格式:末尾還有一個模塊,那個模塊是在vrrp_instance VI_1的模塊裏的,及check_mysql和後面的花括號有一個空格:

 

五、注意keepalived的配置文件,以防主庫恢復後IP漂移回去

我在配置文件裏改爲非搶佔模式nopreempt 和主備的state都改爲BACKUP,這樣當主庫掛了,IP漂移過去後從新啓動主庫,但數據庫還沒修復時不會漂移過來,若是須要漂移過來須要手動先關閉備庫的keepalived,讓其漂移過來。

 

問題形形色色,不一樣環境不一樣需求會趕上不一樣問題,慢慢摸索慢慢發掘。

相關文章
相關標籤/搜索