实验环境
| 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 root@172.25.254.30:/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文件所在的目录
[root@server3 mysql-proxy]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# ls
[root@server3 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)查看
root@server3 conf]# cd /usr/local/mysql-proxy/
[root@server3 mysql-proxy]# ls
bin conf include lib libexec licenses log share
[root@server3 mysql-proxy]# cd log/
[root@server3 log]# ls
mysql-proxy.log mysql-proxy.pid
[root@server3 log]# cat mysql-proxy.log ##查看日志

server3的proxy配置完成!!
测试读写分离
(1)在server1上面:创建新的用户并且授权
[root@server1 mysql]# mysql -uroot -pLIxin123.
mysql> grant insert,update,select on *.* to ll@'%' 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中配置读写分离,包括在server3上搭建mysql-proxy代理服务器的具体步骤,实现客户端写操作指向master节点,读操作指向slave节点。通过创建用户、授权、测试读写分离及验证主从复制状态,确保数据的一致性和高可用性。
597

被折叠的 条评论
为什么被折叠?



