【主库上】
在已有主从同步配置的基础上增加log配置项,打开“全日志”功能。
vim /etc/my.cnf
log=mysqlfull.log
service mysqld restart
cat /var/lib/mysql/mysqlfull.log
给mysqlproxy机器授权:
grant all on *.* to ‘root‘@‘%‘ identified by ‘123123‘;
【从库上】
在已有主从同步配置的基础上增加log配置项,打开“全日志”功能。
vim /etc/my.cnf
log=mysqlfull.log
service mysqld restart
cat /var/lib/mysql/mysqlfull.log
给mysqlproxy机器授权:
grant all on *.* to ‘root‘@‘%‘ identified by ‘123123‘;
--------------------------------------------------------------------
【搭建mysqlproxy】
tar zxf mysql-proxy-0.8.3-linux-rhel5-x86-32bit.tar.gz
mv mysql-proxy-0.8.3-linux-rhel5-x86-32bit /usr/local/mysql-proxy
【配置】
(1)修改主配置
cd /usr/local/mysql-proxy/
创建conf log目录
mkdir conf log
vim创建mysql-proxy.conf,加入下面的内容
vim ./conf/mysql-proxy.conf
[mysql-proxy]
#本机 监听地址 和 开启的端口,默认端口4040
proxy-address=0.0.0.0:4040
#后端mysql用户名和密码
admin-username=root
admin-password=123123
#mysql管理命令,用于对后端mysql集群中每台主机的 健康检查
admin-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/admin-sql.lua
#配置主库ip和端口
proxy-backend-addresses=192.168.20.181:3306
#配置 从 库ip和端口,有多少个从库的,就需要配置多少行
proxy-read-only-backend-addresses=192.168.20.23:3306
proxy-read-only-backend-addresses=192.168.20.24:3306
proxy-read-only-backend-addresses=192.168.20.25:3306
#读写分离lua脚本
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
#日志路径
log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
#日志级别
log-level=debug
#启动参数,以守护进程方法启动
daemon=true
#开启keepalive,如果mysql-proxy进程异常终止后,mysql-proxy将会自动启起。
keepalive=true
(2)修改读写分配置,以方便做测试,因为客户端连接数超过到min_idle_connections后才能让读走从库, 不然读还走主库。
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
min_idle_connections = 1,
max_idle_connections = 2,
【启动mysqlproxy】
cd /etc/init.d/
vim mysqlproxy
#!/bin/bash
#chkconfig: - 99 23
#description: mysql_proxy
mysql_proxy_home=‘/usr/local/mysql-proxy‘
case "$1" in
start)
$mysql_proxy_home/bin/mysql-proxy --defaults-file=$mysql_proxy_home/conf/mysql-proxy.conf
;;
stop)
killall -9 mysql-proxy &>/dev/null
;;
restart)
killall -9 mysql-proxy &>/dev/null
$mysql_proxy_home/bin/mysql-proxy --defaults-file=$mysql_proxy_home/conf/mysql-proxy.conf
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
保存退出后:
chmod +x /etc/init.d/mysqlproxy
chkconfig --add mysqlproxy
chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf
service mysqlproxy start
或者在cd /usr/local/mysql-proxy/下直接: sh mysqlproxy start|stop|restart 也可以做启停操作
[[email protected] mysql-proxy]# netstat -nlp | grep 4040
tcp 0 0 0.0.0.0:4040 0.0.0.0:* LISTEN 23096/mysql-proxy
【测试】
主库上:
tail -f /var/lib/mysql/mysqlfull.log
从库上:
tail -f /var/lib/mysql/mysqlfull.log
多开几个连接向mysqlproxy的4040端口做测试,连接数要大于min_idle_connections值,此处应大于2。
mysql -u root -h192.168.6.106 -P 4040 -p123123
mysql -u root -h192.168.6.106 -P 4040 -p123123
mysql -u root -h192.168.6.106 -P 4040 -p123123
**** 192.168.6.106为主库的ip地址,测试时写成自己主库的ip地址,此处不能写成127.0.0.1也不能写成localhost ****
测试select语句和create,insert语句,如果从库上只有查询(select),主库上只有写(create,update,insert)说明实验正常。
本文出自 “江湖笑笑生” 博客,谢绝转载!
原文:http://hashlinux.blog.51cto.com/9647696/1767346