MySQL Proxy的安裝及基本命令使用教程
MySQL Proxy最壯大的一項(xiàng)功能是告終“讀寫離別(Read/Write Splitting)”。它的原理是讓主數(shù)據(jù)庫處理事務(wù)性查詢,而從數(shù)據(jù)庫處理SELECT查詢。數(shù)據(jù)庫復(fù)制被用來把事務(wù)性查詢導(dǎo)致的改變同步到集群中的從數(shù)據(jù)庫。
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、測(cè)驗(yàn)過程中廢止了B和C的REPLICATION。這么SQL語句一下子就看出來從哪里來的。
萬一是M-S(能夠先在SLAVE上舉行STOP SLAVE)
1. 安裝
下載已經(jīng)編譯好的安裝包,或者預(yù)編譯安裝包均可,在這里,使用預(yù)編譯版本。
[@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個(gè)目錄 [@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/ #刪除符號(hào)連接等垃圾代碼 [@s1.yejr.com mysql-proxy-0.6.0-linux-rhas4-x86]# strip /usr/local/sbin/mysql-proxy
2. 啟動(dòng)
編譯一下啟動(dòng)管理腳本:
[@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
現(xiàn)在解釋一下啟動(dòng)腳本:
--daemon 采用daemon方式啟動(dòng)
--admin-address=:4401 指定mysql proxy的管理端口,在這里,表示本機(jī)的4401端口
--proxy-address=:3307 指定mysql proxy的監(jiān)聽端口,也可以用 127.0.0.1:3307 表示
--proxy-backend-addresses=:3306 指定mysql主機(jī)的端口
--proxy-read-only-backend-addresses=192.168.1.1:3306 指定只讀的mysql主機(jī)端口
--proxy-read-only-backend-addresses=192.168.1.2:3306 指定另一個(gè)只讀的mysql主機(jī)端口
--proxy-lua-script=/usr/local/share/mysql-proxy/rw-splitting.lua 指定lua腳本,在這里,使用的是rw-splitting腳本,用于讀寫分離
完整的參數(shù)可以運(yùn)行以下命令查看:
mysql-proxy --help-all
運(yùn)行以下命令啟動(dòng)/停止/重啟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 | +-------+------+----------------+------+---------+------+-------+------------------+
可以看到,產(chǎn)生了一個(gè)新連接。
用sysbench測(cè)試一下,看會(huì)不會(huì)掛掉:
[@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
還好,沒給大家丟臉,剩下的測(cè)試自己完成吧 :)
4. 其他
mysql proxy還可以實(shí)現(xiàn)連接池的功能,這在很多LAMP開發(fā)中是軟肋,因此,有了mysql proxy,就可以不用再擔(dān)心連接數(shù)超限的問題了。
如果使用rw-splitting.lua腳本的話,最好修改以下2個(gè)參數(shù)的默認(rèn)值:
min_idle_connections = 1 max_idle_connections = 3
相關(guān)文章
linux安裝兩個(gè)mysql(8.0和5.7),并同時(shí)使用方式
這篇文章主要介紹了如何在CentOS?7上下載和安裝MySQL?8.0和MySQL?5.7.30,并詳細(xì)描述了安裝步驟,包括解壓、配置、初始化和啟動(dòng)等過程2024-12-12
MySQL數(shù)據(jù)庫查看數(shù)據(jù)表占用空間大小和記錄數(shù)的方法
這篇文章主要介紹了MySQL數(shù)據(jù)庫查看數(shù)據(jù)表占用空間大小和記錄數(shù)的方法,如果想知道MySQL數(shù)據(jù)庫中每個(gè)表占用的空間、表記錄的行數(shù)的話,可以打開MySQL的information_schema 數(shù)據(jù)庫查詢,本文就講解查詢方法,需要的朋友可以參考下2015-04-04
解決MySql8.0 查看事務(wù)隔離級(jí)別報(bào)錯(cuò)的問題
這篇文章主要介紹了解決MySql8.0 查看事務(wù)隔離級(jí)別報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
Linux下mysql5.6.24(二進(jìn)制)自動(dòng)安裝腳本
這篇文章主要為大家詳細(xì)介紹了Linux環(huán)境下mysql5.6.24二進(jìn)制自動(dòng)安裝腳本,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解
今天小編就為大家分享一篇關(guān)于分組查詢GROUP BY的使用與SQL執(zhí)行順序的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03

