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

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

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

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

🧰 环境和版本信息

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

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

1️⃣ 安装 MySQL

bash 复制代码
sudo apt update
sudo apt install mysql-server -y

2️⃣ 检查 MySQL 版本

bash 复制代码
mysql --version

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


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

主库配置

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

记下 FilePosition 信息。


从库配置

  1. 编辑从库的配置文件
bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
  1. [mysqld] 下添加以下内容
ini 复制代码
server-id=2
relay_log=/var/log/mysql/mysql-relay-bin.log
  1. 重启 MySQL 服务
bash 复制代码
sudo systemctl restart mysql
  1. 配置从库连接到主库
bash 复制代码
mysql -u root -p
sql 复制代码
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
bash 复制代码
sudo apt update
sudo apt install proxysql -y
  1. 启动 ProxySQL 服务
bash 复制代码
sudo systemctl start proxysql
sudo systemctl enable proxysql
  1. 连接到 ProxySQL 管理界面
bash 复制代码
mysql -u admin -p -h 127.0.0.1 -P 6032

默认用户名和密码都是 admin


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

配置主从节点

sql 复制代码
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 从库(读操作)

配置读写分离规则

sql 复制代码
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 延迟检测

启用延迟检测

sql 复制代码
SET mysql-monitor_replication_lag_interval_ms = 1000;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

设置最大延迟阈值

sql 复制代码
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 的数据接口
bash 复制代码
mysql -u myuser -p -h 127.0.0.1 -P 6033
  1. 执行写操作
sql 复制代码
INSERT INTO mydatabase.mytable (name) VALUES ('ProxySQL Test');
  1. 执行读操作
sql 复制代码
SELECT * FROM mydatabase.mytable;

测试延迟检测

在主库上执行以下 SQL:

sql 复制代码
STOP SLAVE;

然后在 ProxySQL 中执行:

sql 复制代码
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 查看从库状态
相关推荐
李艺为12 小时前
Fake Device Test作假屏幕分辨率分析
android·java
zh_xuan12 小时前
github远程library仓库升级
android·github
峥嵘life13 小时前
Android蓝牙停用绝对音量原理
android
czlczl2002092514 小时前
IN和BETWEEN在索引效能的区别
android·adb
Volunteer Technology14 小时前
ES高级搜索功能
android·大数据·elasticsearch
Lw老王要学习14 小时前
本地部署OpenClaw + WSL Ubuntu + 千问云+QQ+微信+飞书
ubuntu·llm·agent·openclaw·龙虾
Digital2Slave14 小时前
如何在ubuntu20.04系统配置Claude code使用中国大模型
ubuntu·claude code
Danileaf_Guo14 小时前
手搓KVM虚拟化!Ubuntu 26.04 + KVM 7.0.0,告别VMware的低成本玩法
linux·运维·服务器·ubuntu
北京自在科技14 小时前
Find Hub App 小更新
android·ios·安卓·findmy·airtag
lbb 小魔仙15 小时前
2026远程办公软件夏季深度横测:ToDesk、向日葵、网易UU远程全面对比,远控白皮书
android·服务器·网络协议·tcp/ip·postgresql