欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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/加压到指定目录下

mysql(四)读写分离(mysql-proxy)

(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        ##打入后台

mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
(3)修改数据库发生读写分离时的最大和最小连接数
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)

(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和日志

mysql(四)读写分离(mysql-proxy)
(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

mysql(四)读写分离(mysql-proxy)
(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 ##查看日志

mysql(四)读写分离(mysql-proxy)
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; 查看表结构


mysql(四)读写分离(mysql-proxy)
(2)server3安装lsof
mysql(四)读写分离(mysql-proxy)

(3)在物理机上连接

mysql -h 172.25.254.30 -ull -pLIxin123. 
多开物理机然后连接一次在server3上losf -i 3306一次,直到出现server2(发现开始读写分离(用户多的时候))

mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
总结:server1(master)上能看到数据说明写操作是在master上
而slave可以查看到数据是因为server1(master)和server2(slave)是主从复制的关系
不能说明server2上可以进行写操作,为了更清楚的验证读写分离,我们做下面的实验

(4)真机上创建并在server1和server2查看

mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
.(5)关闭server2的slave再次测试
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)
总结:当前server2的slave是关闭的所以不能进行主从复制
测试端插入数据server1(master)可以看到说明写操作是在server1上进行的
server2上没有新插入的数据,读操作是在server2上,所以读写分离了

(7)打开server2的slave
mysql(四)读写分离(mysql-proxy)
mysql(四)读写分离(mysql-proxy)

相关标签: 企业运维