1. 程式人生 > >企業 - mysql 讀寫分離(proxy)

企業 - mysql 讀寫分離(proxy)

mysql 讀寫分離(proxy)

MySQL Proxy

MySQL Proxy是一個處於你的client端和MySQL server端之間的簡單程序,它可以監測、分析或改變它們的通信。它使用靈活,沒有限制,常見的用途包括:負載平衡,故障、查詢分析,查詢過濾和修改等等。

MySQL Proxy就是這麽一個中間層代理,簡單的說,MySQL Proxy就是一個連接池,負責將前臺應用的連接請求轉發給後臺的數據庫,並且通過使用lua腳本,可以實現復雜的連接控制和過濾,從而實現讀寫分離負載平衡。對於應用來說,MySQL Proxy是完全透明的,應用則只需要連接到MySQL Proxy的監聽端口即可。當然,這樣proxy機器可能成為單點失效,但完全可以使用多個proxy機器做為

冗余,在應用服務器的連接池配置中配置到多個proxy的連接參數即可。

MySQL Proxy更強大的一項功能是實現“讀寫分離”,基本原理是讓主數據庫處理事務性查詢,讓從庫處理SELECT查詢。數據庫復制被用來把事務性查詢導致的變更同步到集群中的從庫。


實驗


實驗環境

server1 192.168.122.11 master

server2 192.168.122.12 slave

server3 192.168.122.13 proxy


一.安裝 mysql-proxy 並配置


  1. 解壓到指定路徑

    [root@server3~]#tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local

  2. 改名字
    [root@server3local]# mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy

  3. 建目錄

    [root@server3 mysql-proxy]# mkdir etc
    [root@server3 mysql-proxy]# mkdir logs

  4. 寫配置文件

    [root@server3 etc]# vim mysql-proxy.conf

    技術分享圖片

  5. 加權限

    [root@server3 etc]# chmod 660 mysql-proxy.conf

  6. 改參數

    [root@server3 mysql-proxy]# vim rw-splitting.lua
    [root@server3 mysql-proxy]# pwd

    /usr/local/mysql-proxy/share/doc/mysql-proxy

    技術分享圖片

  7. 運行腳本開啟服務

    [root@server3bin]# /usr/local/mysql-proxy/bin/mysql-proxy --plugins=admin --plugins=proxy --defaults-file=/usr/local/mysql-proxy/etc/mysql-proxy.conf

    檢查端口

    netstate -antlup

    技術分享圖片


二、主機 master 進行授權(192.168.122.11)


mysql>grant select, update, insert on *.* to proxy@'192.168.122.%' identified by 'LH=redhat123';


(slave 會同步授權)


技術分享圖片


在 proxy 主機登錄

[root@server3 ~]# mysql -uadmin -pwestos -P 4041 -h 192.168.122.13


查看 mysql 主,備狀態

技術分享圖片



在客戶端遠程登錄數據庫


[root@server4 ~]# mysql -h 192.168.122.13 -uproxy -pLH=redhat123


寫入數據

技術分享圖片



在 proxy 主機查看

技術分享圖片


(master 狀態已經改變)


再次在客戶端登錄

[root@server5 ~]# mysql -h 192.168.122.13 -uproxy -pLH@redhat123


技術分享圖片

查看 proxy

技術分享圖片


三、檢查是否實現數據分離


為了清楚看到數據傳輸狀況

[root@server3 ~]# yum install tcpdump

技術分享圖片


[root@server3 ~]# yum install -y lsof

技術分享圖片






企業 - mysql 讀寫分離(proxy)