读写分离
2018-09-26 本文已影响0人
ivan_cq
数据库读写分离的配置
(一).在server1和server2上做主从复制
server1是master,server2是slave
(二).在server3上做mysql-proxy(调度器)
解压proxy数据包,并将解压后的目录放在/usr/local下
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
mv mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy
建立目录存放读写分离的配置文件和日志
cd /usr/local/mysql-proxy/
mkdir conf
mkdir logs
vim mysql-proxy.conf mysql-proxy --help-all
[mysql-proxy]
user=root # proxy运行的用户身份
proxy-address=0.0.0.0:3306 # proxy监听本机所有接口
proxy-backend-addresses=172.25.1.1:3306 # 后端master(读写)主机
proxy-read-only-backend-addresses=172.25.1.2:3306 # 后端slave(读)主机
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua # lua脚本所在的位置
log-level=debug
daemon=true
keepalive=true
将mysql-proxy的二进制命令放进系统环境变量中
vim ~/.bash_profile
/usr/local/mysql-proxy/bin
source ~/.bash_profile
实现读写分离是有lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装
cd /usr/local/mysql-proxy/share/doc/mysql-proxy
vim rw-splitting.lua # 修改数据库发生读写分离时的最大最小值
mysql-proxy --default-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
在server1(master)上对某个用户授读和插入权限
grant all on *.* to root@'%' identified by 'Hellojay123+';
在另外一台主机上通过调度器server3连接数据库
在server1和server2上安装连接查看 yum install lsof lsof -i:3306 (3306是数据库的端口)
通过外界连接第三次数据库时发生读写分离,此时插入数据是向master中插入数据,读是在slave上.
第三次连接数据库时发生读写分离,读数据在server2上,写数据在server1上:
向数据库中写入数据: