mysql proxy代理安裝和配置
服務器說明:
192.168.1.219 mysql主庫(主從復制)
192.168.1.177 mysql從庫(主從復制)
192.168.1.202 mysql proxy代理(實現讀寫分離)
安裝需要的基礎組件,基本系統都可以滿足lua的組件版本要求
安裝lua(確定是否需要安裝)
yum -y install gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libmc rypt* libtool* flex*
pkgconfig*
Mysql Proxy的安裝
下載mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
注:若是你安裝的軟件包是已編譯的,則無需安裝lua
a、解壓安裝
cd /usr/local/software
tar -zxvf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
cp mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
b、授權
chmod -R 775 /usr/local/mysql-proxy
chown -R mysql:mysql /usr/local/mysql-proxy
c、環境變量的設置
vim /etc/profile //打開此文件,在文件尾部加上以下內容
LUA_PATH="/usr/local/mysql-proxy/share/doc/mysql-proxy/?.lua" // lua環境變量的設置
export LUA_PATH
export PATH=$PATH:/usr/local/mysql-proxy/bin //mysql proxy 環境變量的設置
保存並退出后執行下面命令
source /etc/profile // 使變量立即生效
d、修改mysql proxy的讀寫分離腳本的配置
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
默認最小4個(最大8個)以上的客戶端連接才會實現讀寫分離, 現改為最小1個最大2個,便於讀寫分離的測試
-- connection pool
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, // 改為1
max_idle_connections = 2, // 改為2
is_debug = false
}
end
這是因為mysql-proxy會檢測客戶端連接, 當連接沒有超過min_idle_connections預設值時,
不會進行讀寫分離, 即查詢操作會發生到Master上.
e、開啟防火牆端口設置
vim /etc/sysconfig/iptables //打開防火牆配置文件,加入以下內容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4040 -j ACCEPT
注:mysql-proxy的服務端口默認為4040
f、主庫和從庫給代理服務器創建登錄用戶並授權
登錄主庫192.168.1.219,給主機192.168.1.202創建登錄用戶並授權
ssh root@192.168.1.219 // 登錄主數據庫服務器
mysql -uroot -p321321 // 連接mysql數據庫
mysql>grant all on *.* to 'test'@'192.168.1.202' identified by '321321'; // 創建登錄用戶並授權
mysql>flush privileges; // 刷新MySQL的系統權限相關表
登錄從庫192.168.1.177,給主機192.168.1.202創建登錄用戶並授權,操作步驟和主庫一樣,
注意:主庫和從庫給代理服務器創建登錄用戶並密碼應該一致
g、啟動mysql-proxy
vim /usr/local/mysql-proxy/mysql-proxy.sh // 新建一個shell文件,加入以下內容
#!/bin/sh
mysql-proxy --daemon --log-level=debug --log-file=/var/log/mysql-proxy.log
--plugins=proxy -b 192.168.1.219:3306 -r 192.168.1.177:3306
--proxy-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua" --plugins=admin
--admin-username="test" --admin-password="321321"
--admin-lua-script="/usr/local/mysql-proxy/share/doc/mysql-proxy/admin.lua"
保存並退出
chmod 775 /usr/local/mysql-proxy/mysql-proxy.sh // 授予執行權限
./mysql-proxy.sh // 啟動mysql-proxy
查看mysql-proxy服務端口
netstat -tupln |grep mysql
監控啟動日志
tail -f /var/log/mysql-proxy.log
測試mysql proxy讀寫分離
在讀寫分離測試時,需要開啟多個客戶端窗口連接mysql-proxy
a、打開主庫的mysql 日志
tail -f /usr/local/mysql/my.log
b、打開從庫的mysql 日志
tail -f /usr/local/mysql/my.log
c、開啟多個客戶端窗口連接mysql-proxy
mysql -h192.168.1.202 -P4040 -utest -p321321
插入數據 查詢數據進行測試