在 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 查看从库状态
相关推荐
阿巴斯甜13 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker14 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952715 小时前
Andorid Google 登录接入文档
android
黄林晴16 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_1 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android