环境:
mysql 主库192.168.160.250
mysql 从库 192.168.160.233
mysql-proxy 192.168.110.110
安装依赖包:
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.2.3.tar.gz
cd lua-5.2.3
make linux
此时如果出现
lua.c:67:31: fatal error: readline/readline.h: No such file ordirectory
说明缺少libreadline-dev依赖包
执行:yum install readline-devel
下载安装proxy:
wget http://mysql.cdpa.nsysu.edu.tw/Downloads/MySQL-Proxy/mysql-proxy-0.8.4-Linux-rhel5-x86-64bit.tar.gz
tar zxvf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz -C /usr/local/
cd/usr/local/
mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit/ /usr/local/mysql-proxy
配置path 路径,添加到最后一行
vim/etc/profile
PATH= $PATH:/usr/local/mysql-proxy/bin 添加到最后一行
执行生效:
source /etc/profile
修改读写分离配置文件:
vim/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
if not proxy.global.config.rwsplitthen
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1 测试需要
max_idle_connections = 1, #默认8,改为1测试需要
is_debug = false
}
end
启动proxy:
mysql-proxy --proxy-read-only-backend-addresses=192.168.160.233:3306 --proxy-backend-addresses=192.168.160.250:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &
查看是否启动成功:
netstat-antup | grep proxy
关闭 proxy 进程:
killall -9 mysql-proxy
测试:
如果本地安装了mysql可以:进入CMD ,
进入安装mysql bin目录
链接刚刚启动的 mysql-proxy:
mysql -h 192.168.110.110 -uroot -p -P 4040
注意:两个数据库的用户需要一致(我这里是直接用的 root ,两台服务器的密码一样),如果没有一致的用户,则在两台数据库服务器上执行:
grant all on *.* to '用户名'@'192.168.110.110' identified by '密码';
执行insert和select进行测试
可以多打开几个窗口(cmd)进行测试,这样容易看到效果(一般主数据库服务器是可读可写的,只有超过了我们上面配置的min_idle_connections = 1,才会转到只读数据库读取数据,所以这里多开几个客户端就能够看到效果了)
后续-通过msyql proxy链接乱码解决:
修改my.cnf文件
原来在5.1版本时
[plain] view plain copy
- [mysqld]
- skip-character-set-client-handshake
- init-connect='SET NAMES UTF8'
- default-character-set=utf8
5.5 以上
[plain] view plain copy
- [mysqld]
- init-connect='SET NAME UTF8'
- skip-character-set-client-handshake
- character-set-server=utf8