Mycat配置
簡介
Mycat是一個開源的強大的分佈式的MYSQL中間件,具有如下衆多特性:
- 支持SQL92標準
- 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常見SQL語法
- 遵守Mysql原生協議,跨語言,跨平臺,跨數據庫的通用中間件代理。
- 基於心跳的自動故障切換,支持讀寫分離,支持MySQL主從,以及galera cluster集羣。
- 支持Galera for MySQL集羣,Percona Cluster或者MariaDB cluster
6. 基於Nio實現,有效管理線程,解決高併發問題。
7. 支持數據的多片自動路由與聚合,支持sum,count,max等常用的聚合函數,支持跨庫分頁等等。
我們主要通過mycat基於心跳自動故障切換的機制來實現mysql的高可用部署Mysql的高可用部署方案由2部分組成,分別是mysql自帶的互相主從(在Mysql.docx文檔中已經有詳細介紹)以及mycat的故障自動切換。前者保證了2個數據庫實時的數據一致性,後者保證了客戶端在訪問某一臺數據庫出現異常的情況下可以自動切換到另一個。
準備環境
Mycat依賴JDK所以安裝JDK1.8
Mycat版本1.6
Mycat命令
Mycat目錄下執行命令
./bin/mycat start -啓動
./bin/mycat stop -關閉
./bin/mycat restart -重啓
經測試最好不要使用restart命令重啓,關閉不掉進程兩個進程就重啓了,重啓無效。最好先執行stop 關閉,再執行啓動命令start。或者使用kill -9 端口
使用stop後再執行ps -ef |grep mycat查看進程是否全部關閉
PS:如果使用ps -ef |grep mycat命令殺死進程
記得使用兩次,因爲mycat有兩個進程,8066和9066
Mycat下載
wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
解壓
tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
授權Mycat
chmod -R 777 /mycat
添加環境變量
vi /etc/profile添加
export MYCAT_HOME=/u01/mycat/mycat
使環境變量生效
source /etc/profile
啓動mycat測試是否可用
進入cd mycat/bin目錄,執行mycat啓動命令./mycat start
用ps -ef|grep mycat查看下進程 如下圖,mycat進程存在,啓動成功
查看Mycat日誌
Mycat日誌所在目錄是cat /u01/mycat/mycat/logs/mycat.log
看到有些是連接超時,該超時是mycat自帶的配置,企圖連接數據庫信息的
該配置在conf下的schema.xml裏面自帶的一些例子數據
不用擔心,稍後會配置我們自己連接
可以先看一下conf下的schema.xml配置文件
cat conf/schema.xml
下圖標記的是mycat自帶的一些配置,看一下即可,暫時不管
查看監聽端口
命令netstat -a|grep 8066
mysql的監聽端口是3306,
mycat的監聽端口是8066,檢查下8066是不是在監聽中
查詢端口命令輸入後需要等待一會,端口較多,需要時間查詢
Mycat默認賬號密碼
查看server.xml文件
在mycat目錄下執行命令
cat conf/server.xml
分別有兩個用戶
root/123456
user/user
服務器和IP綁定
命令
vim /etc/hosts
添加
172.19.15.9 mycat_server
連接測試
mysql -uroot -p123456 -h127.0.0.1 -P8066 -DHAWK_DB
PS: mysql端口爲3306、 mycat端口爲8066
能成功連接說明mycat初步成功的,後面更改配置
更改server.xml配置文件
user標籤:
name 用戶名
password 登陸密碼
schemas 登陸庫名稱.PS:JNDI連接用到的和這個一致
更改schema.xml配置
這裏面,有兩個參數需要注意,balance和switchType。
其中,balance指的負載均衡類型,目前的取值有4種:
1. balance="0", 不開啓讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。
2. balance="1",全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且M1與M2互爲主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。
3. balance="2",所有讀操作都隨機的在writeHost、readhost上分發。
4. balance="3",所有讀請求隨機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力
writeType 不建議更改
1. writeType=”0”, 所有寫操作發送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,重新啓動後已切換後的爲準,切換記錄在配置文件中:dnindex.properties。
2. writeType=”1”,所有寫操作都隨機的發送到配置的writeHost,1.5 以後廢棄不推薦。默認0就好了!
switchType指的是切換的模式,目前的取值也有4種:
1. switchType='-1' 表示不自動切換
2. switchType='1' 默認值,表示自動切換
3. switchType='2' 基於MySQL主從同步的狀態決定是否切換,心跳語句爲show slave status
4. switchType='3'基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲show status like 'wsrep%'。
遇到問題,尚未解決
例如:現在有三個數據庫,ABC
AB數據是主主同步
C是從庫,同步B的數據
改變B數據C是可以同步的,改變A數據B也是可以同步成功的,但是C數據沒有發生改變