当前位置: 首页 > article >正文

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

在 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.kler.cn/a/505193.html

相关文章:

  • C++实现设计模式---抽象工厂模式 (Abstract Factory)
  • An FPGA-based SoC System——RISC-V On PYNQ项目复现
  • 基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用-以ENSO预测为例讲解
  • Vue2+OpenLayers给标点Feature添加信息窗体(提供Gitee源码)
  • Java Stream流操作List全攻略:Filter、Sort、GroupBy、Average、Sum实践
  • Ubuntu上,ffmpeg如何使用cuda硬件解码、编码、转码加速
  • C++并发编程之掩藏任务延迟与提高响应性的应用说明
  • Windows MFC 管理员权限DragAcceptFiles无效 处理方法
  • JavaSwing游戏开发之Camera原理
  • Java 输入输出流(上)
  • Gitlab流水线配置
  • Java 后端整合 Swagger + Knife4j 接口文档
  • 学员答疑:安卓分屏窗口的TouchableRegion设置流程追踪
  • 【STM32】存储分析深入——堆栈与map文件
  • C++进阶(四)--set和map的介绍与使用
  • 【落羽的落羽 C语言篇】文件操作
  • stack_queue的底层,模拟实现,deque和priority_queue详解
  • 深入探讨DICOM医学影像中的MPPS服务及其具体实现
  • 【原创】大数据治理入门(4)《保护数据隐私:大数据治理的最佳实践》入门必看 高赞实用
  • 战场物联网:通信挑战与最新解决方案综述
  • BUUCTF[ACTF新生赛2020]easyre
  • ubuntu22.04:解决google chrome 访问百度页面加载慢的问题
  • C++ 并发编程之std::find的并发版本
  • centos使用dpdk库
  • 【AI学习】地平线首席架构师苏箐关于自动驾驶的演讲
  • 华为数通HCIE备考经验分享