在 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 查看从库状态
相关推荐
钛态3 小时前
Flutter 三方库 http_mock_adapter — 赋能鸿蒙应用开发的高效率网络接口 Mock 与自动化测试注入引擎(适配鸿蒙 HarmonyOS Next ohos)
android·网络协议·flutter·http·华为·中间件·harmonyos
王码码20353 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos
左手厨刀右手茼蒿3 小时前
Flutter for OpenHarmony: Flutter 三方库 shamsi_date 助力鸿蒙应用精准适配波斯历法(中东出海必备)
android·flutter·ui·华为·自动化·harmonyos
代码飞天3 小时前
wireshark的高级使用
android·java·wireshark
2501_915918414 小时前
苹果App Store上架审核卡住原因分析与解决方案指南
android·ios·小程序·https·uni-app·iphone·webview
skiy4 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
HelloTonyGo4 小时前
个人游戏笔记本免费“养龙虾”(Win10+WSL2+OpenClaw 部署与配置指南)
windows·ubuntu·wsl2·openclaw
小小小点5 小时前
Android四大常用布局详解与实战
android
MinQ6 小时前
binder和socket区别及原理
android
Ehtan_Zheng6 小时前
Jetpack Compose 中绘制发光边框的多种方式
android