mysql實現讀寫分離中間件MySQL Proxy

MySQL Proxy是一個處於你的client端和MySQL server端之間的簡單程序,它可以監測、分析或改變它們的通信。它使用靈活,沒有限制,常見的用途包括:負載平衡,故障、查詢分析,查詢過濾和修改等等。
MySQL Proxy就是這麼一箇中間層代理,簡單的說,MySQL Proxy就是一個連接池,負責將前臺應用的連接請求轉發給後臺的數據庫,並且通過使用lua腳本,可以實現複雜的連接控制和過濾,從而實現讀寫分離和負載平衡。對於應用來說,MySQL Proxy是完全透明的,應用則只需要連接到MySQL Proxy的監聽端口即可。當然,這樣proxy機器可能成爲單點失效,但完全可以使用多個proxy機器做爲冗餘,在應用服務器的連接池配置中配置到多個proxy的連接參數即可。
MySQL Proxy更強大的一項功能是實現“讀寫分離”,基本原理是讓主數據庫處理事務性查詢,讓從庫處理SELECT查詢。數據庫複製被用來把事務性查詢導致的變更同步到集羣中的從庫。   
官網:http://dev.mysql.com/doc/mysql-proxy/en/

1.環境配置

master 192.168.0.109

slave 192.168.0.110

slave 192.168.0.112

已經配置好主從複製,基於gtid 事務的複製。mysql版本5.7.12

數據庫統一訪問用戶:root  密碼:abc123 並授權其他機器訪問

grant all privileges on test_db.* to 'root'@'%' identified by 'abc123';
flush privileges;
創建了數據庫test_db,和表temp。
2.安裝mysql-proxy
實現讀寫分離是由lua腳本實現的,現在mysql-proxy裏面已經集成,無需再安裝
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
 mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit mysql-proxy
3.配置mysql-proxy
cd mysql-proxy
mkdir lua #創建腳本存放目錄
mkdir logs #創建日誌目錄
 mkdir conf #放置配置文件
cp share/doc/mysql-proxy/rw-splitting.lua ./lua #複製讀寫分離配置文件
cp share/doc/mysql-proxy/admin-sql.lua ./lua #複製管理腳本

vi conf/mysql-proxy.cnf
[mysql-proxy]
daemon=true    #以守護進程方式運行
user=root #運行mysql-proxy用戶
pid-file=/root/mysql-proxy/logs/mysql-proxy.pid #進程pid文件
keepalive=true #mysql-proxy崩潰時,嘗試重啓
event-threads=4 #event-handing線程數,默認值是1
max-open-files=2048  #最大文件句柄數

log-level=info #日誌級別:error|warning|info|message|debug
#log-use-syslog=true  #日誌使用syslog,和log-file只能開啓一個
log-file=/root/mysql-proxy/logs/mysql-proxy.log #日誌文件

admin-username=root #主從mysql共有的用戶
admin-password=abc123 #用戶的密碼
admin-address=192.168.0.112:4040 #mysql-proxy運行ip和端口,不加端口,默認4040
admin-lua-script=/root/mysql-proxy/lua/admin-sql.lua  #指定管理腳本

proxy-skip-profiling=true #是否禁用查詢性能剖析
proxy-backend-addresses=192.168.0.109:3306  #後端mysql的ip和port
proxy-read-only-backend-addresses=192.168.0.110:3306,192.168.0.112:3306 #指定後端從slave讀取數據,多個以逗號分隔,超過2條換行寫
proxy-lua-script=/root/mysql-proxy/lua/rw-splitting.lua #指定讀寫分離配置文件位置
 
 由於安全要求,必須將配置文件權限設爲660(創建人可讀寫,同組人可讀),否則不允許啓動。
chmod 660 conf/mysql-proxy.cnf
4.修改讀寫分離腳本
if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1, #默認超過4個連接數時,纔開始讀寫分離,改爲1
                max_idle_connections = 1, 默認8,改爲1

                is_debug = false
        }
end
5.啓動mysql-proxy
bin/mysql-proxy --defaults-file=conf/mysql-proxy.cnf

使用多個客戶端查詢,添加數據測試。

參考文章:
4.mysql-proxy

發佈了404 篇原創文章 · 獲贊 205 · 訪問量 227萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章