万隆的笔记 万隆的笔记
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
博文索引
笔试面试
  • 在线学站

    • 菜鸟教程 (opens new window)
    • 入门教程 (opens new window)
    • Coursera (opens new window)
  • 在线文档

    • w3school (opens new window)
    • Bootstrap (opens new window)
    • Vue (opens new window)
    • 阿里开发者藏经阁 (opens new window)
  • 在线工具

    • tool 工具集 (opens new window)
    • bejson 工具集 (opens new window)
    • 文档转换 (opens new window)
  • 更多在线资源
  • Changlog
  • Aboutme
GitHub (opens new window)
  • MySQL

  • 架构原理

  • 索引与优化

  • 事务和锁

  • 集群架构

    • 集群架构设计
    • 主从模式
    • 双主模式
    • 分库分表
    • 分库分表案例
    • Docker搭建MySQL主从架构
    • MySQL Proxy读写分离
    • Docker搭建MySQL双主架构
  • MySQL
  • 集群架构
2022-03-23

MySQL Proxy读写分离

# MySQL Proxy读写分离

这里演示本地环境Docker Compose搭建完MySQL主从之后,使用服务端的方式-MySQL Proxy进行读写分离。

说明:

  • 这里仅作为实验进行快速搭建,实际生产会有所不同。
  • 环境:Ubuntu 20.04.

MySQL Proxy:官方提供的MySQL中间件产品,可以实现负载平衡、读写分离等。 下载地址 (opens new window)

  • 读写分离使用lua脚本实现的,现在mysql-proxy里面已经集成,无需再安装

解压安装后,编辑配置文件:

sudo vi /etc/mysql-proxy.cnf

[mysql-proxy]
# 运行mysql-proxy用户
user=root
# 连接后端mysql服务器的用户
admin-username=root
# 连接后端mysql服务器的密码
admin-password=123456
# 代理的监听地址端口,默认端口4040
proxy-address=192.168.0.111:4040
#指定后端主master写入数据
proxy-backend-addresses=192.168.0.100:33061
#指定后端从slave读取数据
proxy-read-only-backend-addresses=192.168.0.100:33071
#指定读写分离配置文件位置
proxy-lua-script=/home/wenwl/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua
log-file=/var/log/mysql-proxy.log
#日志级别,由高到低有(error|warning|info|message|debug)
log-level=debug
#以守护进程方式运行
daemon=true
#mysql-proxy崩溃时,尝试重启
keepalive=true
  • 注意MySQL用户授权的问题。
  • lua脚本、IP地址根据自己实际情况更改
  • 如果没有日志文件,需要自己创建,赋予权限

修改读写分离配置文件,赋予执行权限:

vi share/doc/mysql-proxy/rw-splitting.lua 
......
if not proxy.global.config.rwsplit then
 proxy.global.config.rwsplit = {
  min_idle_connections = 1, # 默认超过4个连接数时,才开始读写分离,改为1
  max_idle_connections = 8, # 默认8
  is_debug = false
 }
end
......

sudo chmod 660 /etc/mysql-proxy.cnf

启动mysql-proxy:

wenwl@ubuntu-saas:~$ cd mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/bin
wenwl@ubuntu-saas:~/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/bin$ sudo ./mysql-proxy --defaults-file=/etc/mysql-proxy.cnf
# 查看是否启动
netstat -tupln | grep 4040 
ps -aux|grep mysql-proxy
# 关闭mysql-proxy使用
killall -9 mysql-proxy

接下来的就是用 MySQL-Cli连接该代理服务器,测试读写分离即可。

  • 如果连接不上,排查日志tail -f /var/log/mysql-proxy.log

参考:

  1. https://blog.csdn.net/qq_34553294/article/details/84779224
  2. https://www.cnblogs.com/zezhou/p/11525081.html
上次更新: 5/30/2023, 11:09:19 PM
Docker搭建MySQL双主架构

Docker搭建MySQL双主架构→

最近更新
01
2025
01-15
02
Elasticsearch面试题
07-17
03
Elasticsearch进阶
07-16
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式