詳解MySQL Proxy Lua安裝和測試教程

來源:互聯網
上載者:User

MySQL Proxy Lua的安裝和測試是本文要介紹的內容,關於MySQL Proxy它是一個處於你的client端和MySQL server端之間的簡單程式,它可以監測、分析或改變它們的通訊。它使用靈活,沒有限制,常見的用途包括:Server Load Balancer,故障、查詢分析,查詢過濾和修改等等。

MySQL Proxy就是這麼一個中介層代理,簡單的說,MySQL Proxy就是一個串連池,負責將前台應用的串連請求轉寄給背景資料庫,並且通過使用lua指令碼,可以實現複雜的串連控制和過濾,從而實現讀寫分離和Server Load Balancer。對於應用來說,MySQL Proxy是完全透明的,應用則只需要串連到MySQL Proxy的監聽連接埠即可。當然,這樣proxy機器可能成為單點失效,但完全可以使用多個proxy機器做為冗餘,在應用伺服器的串連池配置中配置到多個proxy的串連參數即可。

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

以上摘自百度百科

我看重的功能 是負載平衡,容錯移轉,通過和MySQL 主從複製配合MASTER ,SLAVE ),還可以實現 ‘讀寫分離’.

一、安裝

參考網上一堆資料,使用源碼安裝還是失敗。以後有時間再研究。轉向使用二進位安裝,內已包含LUA5.1等

作業系統為CentOS 5.5 32位,從官網下載MySQL Proxy  0.8.2

為:

 
  1.  # wget -c http://dev.mysql.com/get/Downloads/MySQL-Proxy/mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz/
  2. from/ftp://ftp.stu.edu.tw/pub/Unix/Database/Mysql/  
  3. # tar mysql-proxy-0.8.2-linux-rhel5-x86-32bit.tar.gz -C /usr/local  
  4. # mv  mysql-proxy-0.8.2-linux-rhel5-x86-32bit   mysql-proxy 

增加路徑

 
  1.  #vim ~/.bash_profile  
  2. PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin  
  3. export PATH 

二、配置

下載寫好的服務指令碼:

 
  1. #wget -c http://customcode.googlecode.com/files/mysql-proxy  
  2. # cp mysql-proxy   /etc/init.d/mysql-proxy 

修改

 
  1. # vim /etc/init.d/mysql-proxy  
  2. PROXY_PATH=/usr/local/mysql-proxy/bin 

改成unix模式

 
  1. :set fileformat=unix 
  2. # chmod 755 /etc/init.d/mysql-proxy    
  3. # chkconfig mysql-proxy on   

修改設定檔

 
  1. # vi /etc/sysconfig/mysql-proxy    
  2. # options to mysql-proxy   
  3. # do not remove --daemon   
  4. PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306  --daemon" 

其它配置參考官網文檔

 
  1. http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-configuration.html 

兩台mysql上賦權

 
  1. grant all on *.* to "root" @ "192.168.234.131";  
  2. flush privileges; 

啟動服務

 
  1. service mysql-proxy start 

三、測試

1)負載平衡 /etc/sysconfig/mysql-proxy  配置為

 
  1. PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-backend-addresses=192.168.234.132:3306  --daemon" 

資料庫伺服器建同一張表t1 表中,資料不同,

 
  1. use test;  
  2. CREATE TABLE `t1` (  
  3.  `iCode` int(11) NOT NULL AUTO_INCREMENT,  
  4.   `name` varchar(50) DEFAULT NULL,  
  5.     PRIMARY KEY (`iCode`)  
  6. );  
  7. 132  
  8. insert into t1 (name) values ('master');  
  9. 133  
  10. insert into t1 (name) values ('slave'); 

開啟多個視窗,運行

 
  1. mysql -h 192.168.234.131 -u  -p -P 4042 -e"select  name from test.t1;" 

可看到不同結果,mysql-prxoy 會將查詢分配到mysql伺服器

2)容錯移轉

採用1的配置,在132上停止mysql

 
  1. service mysqld stop 

運行:

 
  1. mysql -h 192.168.234.131 -u  -p -P 4042 -e"select  name from test.t1;" 

仍能正常查詢,只有133MySQL上資料。

3)讀寫分離

讀寫分離需依賴LUA指令碼,設定檔改為:

 
  1. PROXY_OPTIONS="--proxy-backend-addresses=192.168.234.133:3306 --proxy-read-only-backend-addresses=192.168.234.132:3306 \  
  2.  
  3. --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua  --keepalive  --daemon" 

133為可寫,132 為唯讀,使用rw-splitting.lua為讀寫分離指令碼

還需配置Master133)-Slave132) 複製。

小結:詳解MySQL Proxy Lua安裝和測試教程的內容介紹完了,希望通過本文的學習能對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.