mysql读写分离

实验环境:

node1:172.25.7.5-----读写

node2:172.25.7.6----只读

node3:172.25.7.7-----mysql代理

真机:172.25.7.250 

# 一、为什么要作读写分离 

数据库每天都要承担的网站的数据更新,所以大量的读写任务都在一个机器上压力非常大。使用读写分离可以有效的缓解数据库压力。

# 二、实验的配置

## 1 先作node1和node2的基于gtid的主从副复制

1.node1和node2下载mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar解压并安装

 

2.mysql 安全初始化

systemctl start mysqld #开启服务
cat /var/log/mysqld.log | grep password #查看初始密码
安全初始化:
mysql -uroot -p加原始密码
 alter user root@localhost identified by 'Sll123+456';

 

3.更改node1和node2配置文件/etc/my.conf

node1:
vim /etc/my.cnf 
  server_id=1
  log-bin=mysql-bin
  gtid_mode=ON
  enforce_gtid_consistency=ON 
systemctl restart mysqld #重启服务

node2:
node1:
vim /etc/my.cnf 
  server_id=2
  log-bin=mysql-bin
  gtid_mode=ON
  enforce_gtid_consistency=ON 
systemctl restart mysqld #重启服务

4.登陆node1数据库创建用户并赋予权限

mysql -uroot -pSll123+456 登陆
grant replication slave on *.* to repl@'172.25.7.%' identified by 'Sll123+666'; #创建用户并且赋予权限

5.登陆node2数据库更改node2mater信息

mysql -uroot -pSll123+456 #登陆
change master to master_host='172.25.7.5',master_user='repl',master_password='Sll123+666',master_auto_position=1; #它的master信息
start slave; #开启slave 模式
show slave status\G;#查看状态

 

6.测试

在master建立一个数据库,看在slave上是否能看到

## 2 node3配置代理信息

下载mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz并解压

tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C /usr/local/  #解压
cd /usr/local/
mv mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy #换个短一点的名字
mkdir conf #建立配置文件目录
vim mysql-proxy.conf #编写配置文件
    [mysql-proxy]
    proxy-address=0.0.0.0:3306 ##mysql-proxy运行的端口
    proxy-read-only-backend-addresses=172.25.7.6:3306 ##slave节点:只读
    proxy-backend-addresses=172.25.7.5:3306  ##master节点:可读可写
    proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua ##lua脚本的路径
    pid-file=/usr/local/mysql-proxy/log/mysql-proxy.pid 进程pid的位置
    log-file=/usr/local/mysql-proxy/log/mysql-proxy.log  ##日志位置
    plugins=proxy
    log-level=debug  ##定义日志级别
    keepalive=true  ##mysql-proxy崩溃时尝试重启
    daemon=true   ##打入后台
vim share/doc/mysql-proxy/rw-splitting.lua #更改最小最大读写分离数量
 40                 min_idle_connections = 1,
 41                 max_idle_connections = 2,


/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  #再次启动

netstat -antlupe #查看端口3306是否开启
yum install lsof -y
lsof -i:306

 

# 三、测试

node5上创建用户:

真机用刚创建的用户登陆: mysql -h 172.25.7.7 -usun -pSll123+456

node5和node6都可以看到:

 

 

这样看不出读写分离的效果,在/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua配置文件里将启动读写分离的最大数量设为2,即超过2个一定启用读写分离。

那就开3个窗口,测试读写分离效果

 

为了效果,将node6的slave同步功能关闭,真机写入u99新数据

 

将node6(只读)slave再次 打开,就又可以看到了:

真机客户端也可以看到了:

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值