MySQL Proxy的裝置及根本敕令應用教程。本站提示廣大學習愛好者:(MySQL Proxy的裝置及根本敕令應用教程)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL Proxy的裝置及根本敕令應用教程正文
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]# ls sbin 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 share mysql-proxy tutorial-constants.lua tutorial-packets.lua tutorial-rewrite.lua tutorial-warnings.lua tutorial-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/sh export LUA_PATH=/usr/local/share/mysql-proxy/?.lua mode=$1 if [ -z "$mode" ] ; then mode="start" fi case $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 ;; esac exit 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 = 1 max_idle_connections = 3