在 WSL Ubuntu 上安装 ProxySQL 并配置 主从同步,读写分离,延迟检测

ops/2025/1/16 8:59:07/

在 WSL Ubuntu 上安装 ProxySQL 并配置 MySQL 主从同步、读写分离、延迟检测

这是一个详细的教程,涵盖以下内容:

  1. 安装 MySQL(主库和从库)
  2. 配置 MySQL 主从同步
  3. 安装 ProxySQL
  4. 配置 ProxySQL 实现读写分离
  5. 配置 ProxySQL 延迟检测
  6. 测试和验证

🧰 环境和版本信息

组件版本
操作系统WSL Ubuntu
MySQL8.x
ProxySQL最新稳定版

🔧 步骤 1:在 WSL Ubuntu 上安装 MySQL(主库和从库)

1️⃣ 安装 MySQL

sudo apt update
sudo apt install mysql-server -y

2️⃣ 检查 MySQL 版本

mysql --version

如果默认安装的 MySQL 版本不是 8.x,可以从 MySQL 官方网站下载合适版本的 .deb 包:

  • 下载地址:https://dev.mysql.com/downloads/mysql/

🔧 步骤 2:配置 MySQL 主从同步

主库配置

  1. 编辑主库的配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. [mysqld] 下添加以下内容
server-id=1
log_bin=/var/log/mysql/mysql-bin.log
binlog_do_db=mydatabase
  1. 重启 MySQL 服务
sudo systemctl restart mysql
  1. 创建复制用户
mysql -u root -p
CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

记下 FilePosition 信息。


从库配置

  1. 编辑从库的配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. [mysqld] 下添加以下内容
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
  1. 重启 MySQL 服务
sudo systemctl restart mysql
  1. 配置从库连接到主库
mysql -u root -p
CHANGE MASTER TO
MASTER_HOST='主库IP地址',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;START SLAVE;
SHOW SLAVE STATUS\G

🔧 步骤 3:在 WSL Ubuntu 上安装 ProxySQL

  1. 安装 ProxySQL
sudo apt update
sudo apt install proxysql -y
  1. 启动 ProxySQL 服务
sudo systemctl start proxysql
sudo systemctl enable proxysql
  1. 连接到 ProxySQL 管理界面
mysql -u admin -p -h 127.0.0.1 -P 6032

默认用户名和密码都是 admin


🔧 步骤 4:配置 ProxySQL 实现读写分离

配置主从节点

INSERT INTO mysql_servers (hostgroup_id, hostname, port)
VALUES (10, '主库IP地址', 3306),(20, '从库IP地址', 3306);LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
Hostgroup ID描述
10主库(写操作)
20从库(读操作)

配置读写分离规则

INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup)
VALUES (1, 1, '^SELECT.*', 20),(2, 1, '^INSERT.*|^UPDATE.*|^DELETE.*', 10);LOAD MYSQL QUERY RULES TO RUNTIME;
SAVE MYSQL QUERY RULES TO DISK;

🔧 步骤 5:配置 ProxySQL 延迟检测

启用延迟检测

SET mysql-monitor_replication_lag_interval_ms = 1000;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

设置最大延迟阈值

INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup, check_type, max_replication_lag)
VALUES (10, 20, 'seconds_behind_master', 5);LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;

🔧 步骤 6:测试配置

测试读写分离

  1. 连接到 ProxySQL 的数据接口
mysql -u myuser -p -h 127.0.0.1 -P 6033
  1. 执行写操作
INSERT INTO mydatabase.mytable (name) VALUES ('ProxySQL Test');
  1. 执行读操作
SELECT * FROM mydatabase.mytable;

测试延迟检测

在主库上执行以下 SQL:

STOP SLAVE;

然后在 ProxySQL 中执行:

SELECT * FROM stats_mysql_connection_pool;

验证是否停止从库的读操作路由。


总结配置

配置项描述
主从同步配置 MySQL 主从复制
读写分离ProxySQL 根据查询类型实现读写分离
延迟检测ProxySQL 自动检测主从延迟,调整路由策略

🎯 常用命令汇总

命令描述
sudo systemctl start proxysql启动 ProxySQL
sudo systemctl restart proxysql重启 ProxySQL
mysql -u admin -p -h 127.0.0.1 -P 6032连接到 ProxySQL 管理界面
SHOW MASTER STATUS;查看主库状态
SHOW SLAVE STATUS\G查看从库状态

http://www.ppmy.cn/ops/150518.html

相关文章

Gitlab Runner安装与配置

由于格式和图片解析问题,为了更好阅读体验可前往 阅读原文 本篇使用Docker安装Gitlab runner进行runner的安装和注册,其他方式请参考官方文档非Docker安装Gitlab runner 请确保runner版本和gitlab版本兼容以及docker相关版本兼容问题 下载镜像 docker p…

IOS工程师

IOS工程师 职位描述 负责程序的开发测试调试工作。 负责后期维护 任职要求 有扎实的Objective-C/Swift语言基础 熟悉IOS开发技术,包括UI、网络等方面 熟悉IOS开发工具和相关开发测试工具的使用 熟悉多线程和网络编程,对高性能程序设计、架构有较多…

抖音矩阵是什么

抖音矩阵是指在同一品牌或个人IP下,通过创建多个不同定位的抖音账号(如主号、副号、子号等),形成一个有机的整体,以实现多维度、多层次的内容覆盖和用户互动。以下是关于抖音矩阵的详细介绍: 抖音矩阵的类…

3D目标检测数据集——Nusence数据集

链接地址 [官网] nuScenes[arXiv] nuScenes: A multimodal dataset for autonomous driving[GitHub] nuScenes devkitnuScenes devkit教程数据集概述 2.1 数据采集 2.1.1 传感器配置 nuScenes的数据采集车辆为Renault Zoe迷你电动车,配备6个周视相机&#x

【OpenGL/Assimp】渲染模型、半透明材质与封装光源

文章目录 渲染成果Assimp库准备:Mesh类修改:透明贴图使用:光源封装:使用方式在如下测试环境中: 渲染成果 Assimp库准备: 从GitHub拉取源码,根据网络教程,借助CMake生成VS工程项目&a…

202年寒假充电计划——自学手册 网络安全(黑客技术)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“…

springboot整合openfeign

在Spring Boot中整合OpenFeign可以帮助你轻松地实现服务之间的HTTP调用。OpenFeign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加简单。以下是如何在Spring Boot项目中整合OpenFeign的步骤 1. 添加依赖 首先,在你的pom.xml文件中添加S…

qt设置qwidget背景色无效

最近在做一个界面,有三个子窗体,于是就把各个子窗体分别做成了三个UI,再将3个UI,放到1个UI,再将那一个UI在其他窗体上进行提升。 最后就发现怎么设置qwidget的背景都没有效果。 在Qt中,如果是给Qwidget的…