天天看點

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

一:環境準備:

應用 主機
mysql-master 192.168.205.184
mysql-slave 192.168.205.185
mycat-01,keeplived,jdk 192.168.205.182
mycat-02,keeplived,jdk 192.168.205.183

mysql主從環境(略)

二: 主機(192.168.205.183,192.168.205.182)上安裝jdk,mycat,keeplived

以192.168.205.183主機為例,另外一台主機配置與183主機一緻:

1.安裝jdk

上傳jdk安裝包解壓安裝到/usr/local/jdk

vim /etc/profile
​
export JAVA_HOME=/usr/local/jdk
​
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
​
export PATH=$JAVA_HOME/bin:$PATH      

. /etc/profile

2.官網下載下傳安裝mycat

wget http://dl.mycat.org.cn/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
​
tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
​
mv mycat/ /opt/
​
3.修改配置檔案
​
cd /opt/mycat/conf
​
vim server.xml      
keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

vim schema.xml

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

4.啟動mycat服務

cd /opt/mycat/bin

./mycat start

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

mycat啟動後會有2個端口8066(資料連接配接端口),9066(管理端口)

ss -ntupl

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

5.通過mysql用戶端連接配接8066(我們在mysql-master節點登入mycat試下)

mysql -ulilong -p111111 -P8066 -h 192.168.205.183

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

6.檢視mycat裡資料庫資訊

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

7.進入TSDB建立表city

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

crate table city(id int,name varchar(8),area float(5,2),people_num int);

檢視資料庫中是否建立成功

show tables;

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在2台資料庫節點看是否已存在此表(由于做了讀寫分離在建立表時走了寫節點也就是主庫,從庫也同步過來了)

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

8.通過mysql用戶端連接配接9066可以檢視到相關dataNode資訊

mysql -ulilong -p111111 -P9066 -h 192.168.205.183

show @@dataNode;

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在2台mycat節點上安裝keepalived并單獨配置日志檔案(預設在/var/log/messages日志檢視不友善)

192.168.205.182:

yum -y install keepalived

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

vim /etc/rsyslog.conf

local0.* /var/log/keepalived.log

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

systemctl restart rsyslog

vim /etc/keepalived/keepalived.conf

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

192.168.205.183:

yum -y install keepalived

vim /etc/sysconfig/keepalived

KEEPALIVED_OPTIONS="-D -d -S 0"

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

vim /etc/rsyslog.conf

local0.* /var/log/keepalived.log

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

systemctl restart rsyslog

vim /etc/keepalived/keepalived.conf

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

分别啟動2節點keepalived

192.168.205.182:

systemctl start keepalived

可以看到vip接口在182節點上

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

192.168.205.183:

systemctl start keepalived

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在mysql節點上我們通過vip接口登入試下

mysql -ulilong -p111111 -P8066 -h 192.168.205.250

下圖我們看到已經登入成功

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

我們停用192.168.205.182的keepalived試下看是否轉移到192.168.205.183上

可以看到182節點vip接口不在了

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在看下183節點vip接口已飄逸到此節點上

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

我們再次啟動主節點上keepalived發現vip接口已經飄逸回來,預設情況下keepalived是搶占模式是以主節點恢複後會直接搶占回來

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

到此為止基本完成配置,可仔細想想如果是所在keepalived的master節點mycat服務有問題那它還會切換到備用節點嗎。答案肯定是否定的。這就需要在keepalived 配置腳本來檢測mycat服務狀态如果所在節點master的mycat服務挂掉了, 那就主動結束所在master節點的keepalived程序切換至備用節點繼續提供服務

2節點分别建立存放腳本的檔案

mkdir -p /etc/keepalived/scripts

vim /etc/keepalived/scripts/chk_mycat.sh

#!/bin/bash

MYCAT_PORT=

ss -ntupl | egrep '8066|9066' | wc -l

if [ $MYCAT_PORT -ne 2 ];then

pkill keepalived

fi

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在 /etc/keepalived/keepalived.conf配置檔案中将以下内容加入到相應位置

vrrp_script chk_mycat {

script "/etc/keepalived/scripts/chk_mycat.sh"

interval 2

weight -50

fall 3

rise 3

timeout 3

}

track_script {

chk_mycat

}

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

重新啟動keepalived服務

systemctl restart keepalived

驗證檢測腳本是否生效:

将master節點上mycat服務手動停掉

cd /opt/mycat/bin && ./mycat stop

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

此時master節點keepalived服務已經停止了

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

在看下backup節點,發現vip已經飄移到此節點上

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

從mysql用戶端通路正常

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

配置MASTER<-->slave 互相切換時郵件通知

2個keepalived節點安裝postfix郵件服務(預設已安裝)和 發送郵件插件mailx

yum -y install mailx

vim /etc/mail.rc

set [email protected]

set smtp=smtp.exmail.qq.com

set [email protected]

set smtp-auth-password=***

smtp-auth=login

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

将以下配置加入下面相應位置(2台做同樣操作)

MASTER,BACKUP,FAULT(大小寫均可)

vim /etc/keepalived/keepalived.conf

notify_master "/etc/keepalived/scripts/notify.sh MASTER"

notify_backup "/etc/keepalived/scripts/notify.sh BACKUP"

notify_fault "/etc/keepalived/scripts/notify.sh FAULT"

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

建立相應腳本檔案(2台做同樣操作)

cd /etc/keepalived/scripts

vim notify.sh

#!/bin/bash

SEND_to_MAIL='[email protected]'

notify() {

MAIL_SUBJECT="$(hostname) to be $1, vip 轉移"

MAIL_TEXT="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"

echo "$MAIL_TEXT" | mail -s "$MAIL_SUBJECT" $SEND_to_MAIL

}

case $1 in

MASTER)

notify MASTER

;;

BACKUP)

notify BACKUP

;;

FAULT)

notify FAULT

;;

*)

echo "Usage: $(basename $0) {MASTER|BACKUP|FAULT}"

exit 1

;;

esac

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

更改腳本執行權限

chmod +x notify

重新啟動keepalived服務

systemctl restart keepalived

已可以看到vip已轉移到備用節點上

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

-------------------------------------------------------------------------------------------------------------------------------------

mycat分表

1.我們以2個dataNode節點為例子在mysql-master庫上建立cs1_db,mysql-slave會同步cs1_db庫,之前已建過cs_db庫,在2個庫裡分别建立表'wuhan'

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

2.mycat節點(2台分表做以下配置)

vim schema.xml

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

vim rule.xml

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)
keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

3.重新開機mycat服務

cd /opt/mycat/bin && ./mycat restart

4.通過VIP接口連接配接mycat服務,插入資料

mysql -ulilong -p111111 -P8066 -h 192.168.205.250

insert into wuhan(id,address) values(7,'xx'),(8,'xg'),(9,'lx'),(10,'ob'),(11,'kx'),(12,'hx');

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

5.檢視2個資料庫wuhan表中資料,發現資料已經分表插入到了2個資料庫中同一表裡

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

6.可以看下mysql-slave庫也同步了

keeplived+mycat+mysql高可用讀寫分離水準分表(誰看誰都會)

到此所有配置已結束