MySQL——读写分离功能的实现

文章目录


实验环境:
server1:192.168.43.10
server2:192.168.43.20
server3:192.168.43.30(作为MySQL-proxy的代理)
在server1中
1.设置基于gtid的主从复制
systemctl stop mysqld.service停止服务
vim /etc/my.cnf设置基于gtid的主从复制

log-bin=mysql-bin ##基于二进制日志位置的主从复制
server-id=1
gtid_mode=ON ##打开gtid
enforce-gtid-consistency=ON

rm -fr /var/lib/mysql/*清空数据
systemctl start mysqld重启服务

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


2.初始化MySQL,创建用户并授权
cat /var/log/mysqld.log |grep password查看临时密码
mysql -uroot -p

mysql> alter user root@localhost identified by 'My12345.';##更改密码
mysql>  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.43.%' IDENTIFIED BY 'My12345.'; ##创建用户并授权

在这里插入图片描述


在server2中
1.设置基于gtid的主从复制
systemctl stop mysqld.service停止服务
vim /etc/my.cnf设置基于gtid的主从复制

log-bin=mysql-bin ##基于二进制日志位置的主从复制
server-id=1
gtid_mode=ON ##打开gtid
enforce-gtid-consistency=ON

rm -fr /var/lib/mysql/*清空数据
systemctl start mysqld重启服务

在这里插入图片描述


2.初始化MySQL,更改复制方式为gtid主从复制
cat /var/log/mysqld.log |grep password查看临时密码
mysql -uroot -p

mysql> alter user root@localhost identified by 'My12345.';

mysql> CHANGE MASTER TO
    -> MASTER_HOST = '192.168.43.10',
    -> MASTER_USER = 'repl',
    -> MASTER_PASSWORD = 'My12345.',
    -> MASTER_AUTO_POSITION = 1;

mysql> START slave;##开启复制
SHOW slave STATUS\G ##查看状态

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


测试:
在这里插入图片描述
在这里插入图片描述


在server3中设置读写分离
1.安装mysql-proxy
tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/解压包
ln -s /usr/local/mysql-proxy-0.8.5-linux-el6-x86-64bit /usr/local/mysql-proxy做软连接

在这里插入图片描述


2.配置mysql-proxy
mkdir /usr/local/mysql-proxy/bin/conf建立配置目录
vim /usr/local/mysql-proxy/conf/mysql-proxy.conf配置

[mysql-proxy]
proxy-address=0.0.0.0:3306
proxy-backend-addresses=192.168.43.10:3306
proxy-read-only-backend-addresses=192.168.43.20:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid
log-file=/usr/local/mysql-proxy/log/mysql-proxy.log
plugins=proxy
log-level=debug
keepalive=true
daemon=true

chmod 660 /usr/local/mysql-proxy/bin/conf/mysql-proxy.conf修改配置文件权限
mkdir /usr/local/mysql-proxy/log建立日志目录

在这里插入图片描述


2.设置读写分离启动机制
vim /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplit then
        proxy.global.config.rwsplit = {
                min_idle_connections = 1,
                max_idle_connections = 2,
                is_debug = false
        }
end

在这里插入图片描述


3.启动mysql-proxy
/usr/local/mysql-proxy/bin/mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf启动
注意:不能启动mysql,因为mysql-proxy使用3306端口
cat /usr/local/mysql-proxy/log/mysql-proxy.log查看日志
在这里插入图片描述
在这里插入图片描述


测试:
在server1中

mysql> grant insert,update,select on *.* to repl@'%' identified by 'My12345.';
mysql> flush privileges;
mysql> USE test;
mysql> CREATE TABLE testtable(
    -> username varchar(10) not null,
    -> password varchar(15) not null);
mysql> desc testtable;

在这里插入图片描述
在用户端:
(注意:用户端安的是MariaDB-server)
mysql -h 192.168.43.30 -ured -pMy12345.

在这里插入图片描述


在server3中:
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在server2中关闭主从复制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值