准备

安装Mysql。这个参考Mysql主从双机备份。别忘了注释掉bind-address这一行。
安装readline

1
apt-get install libreadline6-dev

mysql-proxy需要lua脚本。lua官网

1
apt-get install lua5.2

键入lua看看有没有成功。
安装mysql-proxy

1
apt-get install mysql-proxy

如果找不到包,就换个源。阿里源

设置Proxy

修改设置

1
2
3
sudo vim /etc/default/mysql-proxy
ENABLED="true"
OPTIONS="--defaults-file=/etc/mysql/mysql-proxy.cnf"

编写配置文件/etc/mysql/mysql-proxy.cnf

1
sudo vim /etc/mysql/mysql-proxy.cnf

如下。(别忘了删除注释)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[mysql-proxy]
daemon = true
user = root #运行mysql-proxy的用户
proxy-skip-profiling = true
keepalive = true
max-open-files = 2048
event-threads = 50
pid-file = /var/run/mysql-proxy.pid
log-file = /var/log/mysql-proxy.log
log-level = debug
admin-address = :4401
admin-username = Client #主从共有的mysql的账号
admin-password = 123456 #密码
admin-lua-script = /usr/share/mysql-proxy/admin-sql.lua #指定管理脚本
proxy-address = :4040
proxy-backend-addresses = xx.xx.xx.xx:3306 #主服务器ip+端口号
proxy-read-only-backend-addresses = xx.xx.xx.xx:3306 #从服务器ip+端口号
proxy-lua-script = /usr/share/mysql-proxy/rw-splitting.lua #指定读写分离配置文件位置

其中管理脚本分离配置文件根据你的情况配置。用这个命令来查找文件位置

1
dpkg -L mysql-proxy|grep '.lua'

修改权限,否则无法启动

1
sudo chmod 0660 /etc/mysql/mysql-proxy.cnf

修改读写分离配置文件

1
2
3
4
5
6
7
8
9
vi /usr/lib/mysql-proxy/lua/proxy/rw-splitting.lua
if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1, #默认超过4个连接数时,才开始读写分离,改为1
max_idle_connections = 1, #默认8,改为1
is_debug = false
}
end

启动

1
sudo /etc/init.d/mysql-proxy start

测试4040端口

1
mysql -hlocalhost -P4040 -uroot -p

在Master-VPS的mysql里创建账号Client

1
2
3
grant all on *.* to 'Client'@'mysql-proxy的IP' identified by '123456';
flush privileges;
exit;

Master和Slave都装上ufw,并且允许Proxy的IP。操作参考Mysql主从双机备份

操作完成,重启一下mysql

1
/etc/init.d/mysql restart

测试

本地

1
mysql -h Proxy_VPS_IP -u Client --port=4040 -p

会发现
官方bug
哈哈哈,其实整个过程是没有问题的,逻辑理论都很清晰,换个mysql-proxy版本试试就好了。但是我他妈还没是成功。

参考

kutubb
neo-chen的博客
u011148119的专栏
Keep Moving