mysql读写分离是在mysql主从同步的基础上做的,mysql主服务器负责写,多台mysql从服务器负责读,mysql主从同步仅仅是把mysql主服务器的数据库同步到了mysql从服务器上,如果要实现读写分离,还需要一个服务器去协调。这个服务就是mysql-proxy。
1.环境配置
mysql主服务器:192.168.174.129
mysql从服务器:192.168.174.130
mysql-proxy服务器:192.168.174.131
master、slave以及mysql-proxy服务器的防火墙都为关闭状态,selinux也为disabled,不然会出错,selinux设置重启生效。
2.mysql-proxy安装
mysql的读写分离是靠过rw-splitting.lua脚本实现的,因此需要安装lua。
安装之前先安装包依赖
yum -y install gcc* gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt libtool* flex* pkgconfig* libevent* glib*
wget 下载lua,很小,很快就能下载完成,解压
wget
进入lua解压后目录,执行
make linux
make && make install
export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"
下载mysql-proxy,解压
执行
mkdir /usr/local/mysql-proxy
cp * /usr/local/mysql-proxy
cd /usr/local/mysql-proxy
修改rw-splitting.lua文件
修改连接数,默认为4,即只有当有四台mysql服务器时才启用读写分离,为了试验成功,改为1
vim /usr/local/mysql-proxy/rw-splitting.lua
启动msyql-proxy
cd /usr/local/mysql-proxy/bin
./mysql-proxy --proxy-read-only-backend-addresses=192.168.174.130:3306 --proxy-backend-addresses=192.168.174.129:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &
参数说明:
--proxy-read-only-backend-addresses ---------只读服务器ip地址
--proxy-backend-addresses ----------------------服务器地址(mysql主服务器)
--proxy-lua-script ----------------------------lua脚本路径
& -----------------------------------------------------表示后台执行
mysql主从备份+mysql读写分离配置完成。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx