mysql-proxy 是一個mysql代理程序,主要目的實現mysql的讀寫分離
是經過lua腳原本實現
軟件版本:mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
這是一個通用的二進制安裝包,下載地址:https://pan.baidu.com/s/1hsJmi9Imysql
1 解壓安裝linux
tar -xvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gzsql
把剛纔解壓的文件夾mysql-proxy-0.8.5-linux-el6-x86-64bit 複製到/usr/local/mysql-proxyvim
[root@myvm mysql]# mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
把/usr/local/mysql-proxy 設置爲root用戶和root組後端
root@myvm local]# chown root.root mysql-proxy/ -R
2 設置服務器
2.1 編寫啓動腳本mysql-proxy ,因爲啓動腳本死有Lua寫的,因此能夠從其餘方面找到修改便可。啓動腳本這裏能夠下載http://pan.baidu.com/s/1bpDWFqJ 並放在/etc/init.d/下面tcp
[root@myvm mysql]# cp mysql-proxy /etc/init.d/ide
2.2修改lua腳本
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
min_idle_connections = 1,
max_idle_connections = 1,ui
注意:修改上面是修改的最小和最大啓動讀寫分離的連接數lua
2.3添加mysql-proxy的配置文件
vim /etc/sysconfig/mysql-proxy
ADMIN_USER="admin"
ADMIN_PASSWORD="admin"
ADMIN_ADDRESS=""
ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"
PROXY_ADDRESS=""
PROXY_USER="mysql-proxy"
PROXY_OPTIONS="--daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=192.168.242.134:3306 --proxy-read-only-backend-addresses=192.168.242.135:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"
#//--daemon:以守護進程模式啓動mysql-proxy
#//--proxy-backend-addresses:後端可讀寫的mysql服務器的地址和端口
#//--proxy-read-only-backend-addresses:後端只讀mysql服務器的地址和端口
#//--proxy-lua-script:完成mysql代理功能的Lua腳本
上面的proxy-backend-addresses 後面跟上主服務器的地址,proxy-read-only-backend-addresses 後面跟上從服務器的地址
2.4啓動mysql-proxy
/etc/init.d/mysql-proxy start
netstat -anutlp|grep mysql
注意:須要先對/etc/init.d/mysql-proxy 進行權限設置爲755
[root@myvm init.d]# chmod 755 mysql-proxy [root@myvm init.d]# /etc/init.d/mysql-proxy start Starting /usr/local/mysql-proxy/bin/mysql-proxy: [ OK ]
2.5驗證
因爲須要在mysql-prxoy上面登陸mysql服務器因此須要安裝一個mysql客戶端,若是你不在proxy上登陸,那麼mysql-proxy服務器連mysql客戶端都不準要安裝
在master上面建立一個用戶
grant all on *.* to 'jack'@'%' identified by '123456'
flush privileges
登陸mysql-proxy的管理端
mysql -uadmin -padmin -h mysql-proxy-ip --prot 4041
這裏的用戶名和密碼是啓動腳本中設置的用戶名和密碼並不是mysql master所受權的用戶
登陸mysql真實提供功能的服務器
mysql -ujack -p123456 -h mysql-proxy-ip --port 3306
而後在master上使用tcpdump抓包分析
tcpdump -i eth0 -nn -XX ip dst mysql-master-ip and tcp dst port 3306
在從服務器上也使用tcpdump抓包分析
tcpdump -i eth0 -nn -XX ip dst mysql-slave-ip and tcp dst port 3306
mysql -ujack -p123456 -h mysql-proxy-ip --port 3306
create database db_name能夠看到數據在master上抓包了
select * from up01;能夠看到數據在slave上抓包了
若是沒有實現,請多開幾個mysql-proxy的鏈接會話
並多執行幾回select語句
能夠在mysql-proxy的管理端上使用 select * from backends去查看後端相應信息 +-------------+----------------------+-------+------+------+-------------------+ | backend_ndx | address | state | type | uuid | connected_clients | +-------------+----------------------+-------+------+------+-------------------+ | 1 | 192.168.125.128:3306 | up | rw | NULL | 0 | | 2 | 192.168.125.129:3306 | up | ro | NULL | 0 | +-------------+----------------------+-------+------+------+-------------------+ 2 rows in set (0.00 sec) 若是不想寫啓動腳本就要用如下命令和參數去啓動 /usr/local/mysql-proxy/libexec/mysql-proxy --daemon --log-level=info --log-use-syslog --plugins=proxy --plugins=admin --proxy-backend-addresses=192.168.125.128:3306 --proxy-read-only-backend-addresses=192.168.125.12:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --pid-file=/var/run/mysql-proxy.pid --proxy-address= --user=mysql-proxy --admin-username=admin --admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua --admin-password=admin