MySQL Proxy的安裝及基本命令使用教程_Mysql

來源:互聯網
上載者:User

MySQL Proxy最壯大的一項功能是告終“讀寫離別(Read/Write Splitting)”。它的原理是讓主要資料庫處理事務性查詢,而從資料庫處理SELECT查詢。資料庫複寫被用來把事務性查詢導致的改變同步到叢集中的從資料庫。

0.必備軟體:

1、LUA

能夠去LUA的官方下載:dpa.nsysu.edu.tw/Downloads/MySQL-Proxy/。

可能去MYSQL官方下載原始碼。

我這裡下載了:

mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.6.0.tar.gz

3、測驗過程中廢止了B和C的REPLICATION。這麼SQL語句一下子就看出來從哪裡來的。

萬一是M-S(能夠先在SLAVE上舉行STOP SLAVE)


1. 安裝
下載已經編譯好的安裝包,或者先行編譯安裝包均可,在這裡,使用先行編譯版本。

[@s1.yejr.com ~]# tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz[@s1.yejr.com ~]# cd mysql-proxy-0.6.0-linux-rhas4-x86#可以看到有2個目錄[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# lssbin share[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv sbin/mysql-proxy /usr/local/sbin/[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# ls sharemysql-proxy     tutorial-constants.lua tutorial-packets.lua   tutorial-rewrite.lua tutorial-warnings.luatutorial-basic.lua tutorial-inject.lua   tutorial-query-time.lua tutorial-states.lua#將lua指令碼放到/usr/local/share下,以備他用[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# mv share/mysql-proxy /usr/local/share/#刪除符號串連等垃圾代碼[@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy

2. 啟動
編譯一下啟動管理指令碼:

[@s1.yejr.com ~]# vi /etc/init.d/mysql-proxy#!/bin/shexport LUA_PATH=/usr/local/share/mysql-proxy/?.luamode=$1if [ -z "$mode" ] ; then mode="start"ficase $mode in 'start')  mysql-proxy --daemon \--admin-address=:4401 \--proxy-address=:3307 \--proxy-backend-addresses=:3306 \--proxy-read-only-backend-addresses=192.168.133.232:3306 \--proxy-read-only-backend-addresses=10.10.74.61:3306 \--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua  ;; 'stop')  killall mysql-proxy  ;; 'restart')  if $0 stop ; then   $0 start  else   echo "retart failed!!!"   exit 1  fi  ;;esacexit 0

現在解釋一下啟動指令碼:
--daemon 採用daemon方式啟動
--admin-address=:4401 指定mysql proxy的管理連接埠,在這裡,表示原生4401連接埠
--proxy-address=:3307 指定mysql proxy的監聽連接埠,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=:3306 指定mysql主機的連接埠
--proxy-read-only-backend-addresses=192.168.1.1:3306 指定唯讀mysql主機連接埠
--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一個唯讀mysql主機連接埠
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua指令碼,在這裡,使用的是rw-splitting指令碼,用於讀寫分離

完整的參數可以運行以下命令查看:

mysql-proxy --help-all

運行以下命令啟動/停止/重啟mysql proxy:

[@s1.yejr.com ~]# /etc/init.d/mysql-proxy start[@s1.yejr.com ~]# /etc/init.d/mysql-proxy stop[@s1.yejr.com ~]# /etc/init.d/mysql-proxy restart

3. 試用

[@s1.yejr.com ~]# mysql -h127.0.0.1 -uroot -P3307
mysql> show processlist;
+-------+------+----------------+------+---------+------+-------+------------------+| Id  | User | Host      | db  | Command | Time | State | Info       |+-------+------+----------------+------+---------+------+-------+------------------+| 30052 | root | localhost:9656 | NULL | Query  |  0 | NULL | show processlist |+-------+------+----------------+------+---------+------+-------+------------------+

可以看到,產生了一個新串連。

用sysbench測試一下,看會不會掛掉:

[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test prepare[@s1.yejr.com ~]# sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=1000000 \--mysql-socket=/tmp/mysql.sock --mysql-user=root --mysql-db=test run
..................Threads fairness:  events (avg/stddev):      10000.0000/0.00  execution time (avg/stddev):  23.0387/0.00

還好,沒給大家丟臉,剩下的測試自己完成吧 :)

4. 其他
mysql proxy還可以實現串連池的功能,這在很多LAMP開發中是軟肋,因此,有了mysql proxy,就可以不用再擔心串連數超限的問題了。
如果使用rw-splitting.lua指令碼的話,最好修改以下2個參數的預設值:

min_idle_connections = 1max_idle_connections = 3

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.