mysql(mariadb)数据库的读写分离(mysql-proxy)(四)(centos8)

一、读写分离原理

mariadb(mysql)读写分离的基本的原理是让主数据库处理事务性增加、修改、更新、删除操作(CREATE、INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。读写分离的前提是基于主从复制,这样可以保证在master上修改数据,slave同步之后,web应用可以读取到slave端的数据。

二、读写分离环境

服务器IP查询命令
数据库Master的IP192.168.1.200
数据库Slave的IP192.168.1.210
mysql-proxy服务器的IP192.168.1.220
mariadb版本mariadb-server-10.3.11-2.module_el8.0.0+35+6f2527ed.x86_64
rpm -qa | grep mariadb
mysql-proxy版本mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit
linux版本CentOS Linux release 8.0.1905 (Core)cat /etc/redhat-release

三、读写分离部署

一、服务器200、210、220安装数据库mariadb(mysql)服务

安装过程请参照博客:https://blog.csdn.net/renfeigui0/article/details/102743258

二、服务器200、210配置mariadb(mysql)服务主从复制,确保主从工作正常运行

配置过程请参照博客:https://blog.csdn.net/renfeigui0/article/details/102797353

三、服务器220安装mariadb(mysql)proxy服务

1、登录官网https://downloads.mysql.com/archives/proxy/,根据自己的系统选择合适的软件版本。
在这里插入图片描述

2、下载mariadb(mysql)proxy软件,解压并移动到指定目录/usr/local/mysql-proxy。

wget  https://downloads.mysql.com/archives/get/file/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
ls
tar zxf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit  /usr/local/mysql-proxy

3、使用如下命令,编辑环境变量配置文件内容。

export PATH=$PATH:$HOME/bin:/usr/local/mysql-proxy/bin

4、进入mysql-proxy目录,编辑配置文件,增加如下配置文件内容。(配置文件中不要有注释空格等其他内容,不然启动程序时会报错)。

cd /usr/local/mysql-proxy/
vi  mysql-proxy.conf

配置文件内容

[mysql-proxy]
plugins=proxy
proxy-address=192.168.1.220:4040
proxy-backend-addresses=192.168.1.200:3306
proxy-read-only-backend-addresses=192.168.1.210:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/usr/local/mysql-proxy/mysql-proxy.log
log-level=debug
keepalive=true
daemon=true

5、启动mysql-proxy服务,如果报错“(0660 or stricter required)”,如下图一,修改配置文件权限为660即可,服务正常启动后如下图二。查看启动日志,如下图三。

mysql-proxy   --defaults-file=/usr/local/mysql-proxy/mysql-proxy.conf
chmod   660   /usr/local/mysql-proxy/mysql-proxy.conf
mysql-proxy   --defaults-file=/usr/local/mysql-proxy/mysql-proxy.conf
netstat -antp |grep mysql-proxy
 cat    /usr/local/mysql-proxy/mysql-proxy.log    #查看日志

图一
在这里插入图片描述
图二
在这里插入图片描述

图三
在这里插入图片描述

6、修改读写分离配置文件rw-splitting.lua,1表示只要有一个连接,就进行读写分离。重启mysql-proxy服务。

find /  -name  rw-splitting.lua
vi /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
pkill  mysql-proxy
mysql-proxy   --defaults-file=/usr/local/mysql-proxy/mysql-proxy.conf

在这里插入图片描述

7、主从服务器200、210,登录数据库授权账户mysqlproxy,密码123456,访问所有数据库所有权限。

grant all on *.*  to  'mysqlproxy'@'%'identified  by '123456'; 
flush  privileges;
grant all on *.*  to  'mysqlproxy'@'%'identified  by '123456'; 
flush  privileges;

8、读写分离测试。

写入测试(在proxy上使用建表语句成功在master上创建数据表stu,slave通过主从复制,得到stu数据表。在slave服务器上使用“stop slave”命令先停止slave,再从proxy上插入数据,master上通过查询看到新插入的数据,slave上却查询不到新插入的数据,表明通过proxy插入语句的数据是写入master的数据表中。proxy也查询不到新数据,表明通过proxy查询的数据是查询的slave的数据库)

步骤masterslaveproxy
1mysql -uroot -pmysql -uroot -pmysql -umysqlproxy -p -P 4040 -h 192.168.1.220
2show databases;show databases;show databases;
3use newdb;use newdb;use newdb;
4show tables;show tables;show tables;
5create table stu (age int, name char(40) );
6show tables;show tables;show tables;
7stop slave;
8insert into stu values (220, ‘proxy’);
9select * from stu;select * from stu;select * from stu;

在这里插入图片描述
在这里插入图片描述

读取测试(salve服务器使用“start slave”启动slave服务,先通过proxy插入三条数据,然后slave删除一条数据,再次在proxy查询时,只能看到2条数据,说明proxy查询读的是从库)

步骤masterslaveproxy
1start alave;
2insert into stu values (200, ‘master’);
3insert into stu values (210, ‘slave’);
4insert into stu values (220, ‘proxy’);
5select * from stu;select * from stu;select * from stu;
6delete from stu where age=‘220’;
7select * from stu;select * from stu;select * from stu;

在这里插入图片描述

9、mysql-proxy.conf配置文件说明。

参数说明
[mysql-proxy]
plugins=proxy在mysql-proxy启动时加载的插件。
proxy-address=192.168.1.220:4040代理服务监听的地址和端口,不加端口号时,默认4040。
proxy-backend-addresses=192.168.1.200:3306指定后端master,写入mysql服务器的地址和端口。
proxy-read-only-backend-addresses=192.168.1.210:3306指定后端slave,只读mysql服务器的地址和端口。
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua指定读写分离配置文件位置。
log-file=/usr/local/mysql-proxy/mysql-proxy.log指定日志文件位置。
log-level=debug定义log日志级别,由高到低分别有(error
keepalive=true以守护进程方式启动mysql-proxy。
daemon=true在mysql-proxy崩溃时尝试重启。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值