mysql(四)读写分离(mysql-proxy)
程序员文章站
2022-05-02 10:04:01
...
实验环境
server1 172.25.254.10 | master mysqld |
---|---|
server2 172.25.254.20 | slave mysqld |
server3 172.25.254.30 | mysql-proxy |
物理机 172.25.254.2 | 测试 |
基于主从复制!!
配置server3代理端(mysql-proxy)
在server3上面:搭建proxy代理服务器(实现客户端写在server1上面、客户端读server2上的数据)
(1)真机给代理server3传送代理安装包
scp mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz aaa@qq.com:/root
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/加压到指定目录下
(2)新建一个配置文件的目录,创建配置文件
mkdir conf
cd conf/
vim mysql-proxy.conf编写服务的配置文件
1 [mysql-proxy]
2 proxy-address=0.0.0.0:3306 ##mysql-proxy运行的端口
3 proxy-read-only-backend-addresses=172.25.6.2:3306 ##slave节点:只读
4 proxy-backend-addresses=172.25.6.1:3306 ##master节点:可读可写
5 proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ##lua脚本的路径
6 pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid 进程pid的位置
7 log-file=/usr/local/mysql-proxy/log/mysql-proxy.log ##日志位置
8 plugins=proxy
9 log-level=debug ##定义日志级别
10 keepalive=true ##mysql-proxy崩溃时尝试重启
11 daemon=true ##打入后台
(3)修改数据库发生读写分离时的最大和最小连接数
(4)创建日志文件和进程pid文件所在的目录
[aaa@qq.com mysql-proxy]# cd /usr/local/mysql-proxy/
[aaa@qq.com mysql-proxy]# ls
[aaa@qq.com mysql-proxy]# mkdir log建立目录,存放进程pid和日志
(5)启动mysql-proxy
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf修改配置文件的权限
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf
(6)查看
aaa@qq.com conf]# cd /usr/local/mysql-proxy/
[aaa@qq.com mysql-proxy]# ls
bin conf include lib libexec licenses log share
[aaa@qq.com mysql-proxy]# cd log/
[aaa@qq.com log]# ls
mysql-proxy.log mysql-proxy.pid
[aaa@qq.com log]# cat mysql-proxy.log ##查看日志
server3的proxy配置完成!!
测试读写分离
(1)在server1上面:创建新的用户并且授权
[aaa@qq.com mysql]# mysql -uroot -pLIxin123.
mysql> grant insert,update,select on *.* to aaa@qq.com'%' identified by 'LIxin123.'; 新建一个用户ll并对他授权
mysql> flush privileges;刷新授权表
mysql> use westos;
mysql> create table userinfo (
-> username varchar(10) not null,
-> password varchar(15) not null);
mysql> desc userinfo; 查看表结构
(2)server3安装lsof
(3)在物理机上连接
mysql -h 172.25.254.30 -ull -pLIxin123.
多开物理机然后连接一次在server3上losf -i 3306一次,直到出现server2(发现开始读写分离(用户多的时候))
总结:server1(master)上能看到数据说明写操作是在master上
而slave可以查看到数据是因为server1(master)和server2(slave)是主从复制的关系
不能说明server2上可以进行写操作,为了更清楚的验证读写分离,我们做下面的实验
(4)真机上创建并在server1和server2查看
.(5)关闭server2的slave再次测试
总结:当前server2的slave是关闭的所以不能进行主从复制
测试端插入数据server1(master)可以看到说明写操作是在server1上进行的
server2上没有新插入的数据,读操作是在server2上,所以读写分离了
(7)打开server2的slave
上一篇: mysql读写分离的实现
下一篇: proxy实现mysql读写分离