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

MySQL读写分离部署

目录

1.环境准备

2. 安装 ProxySQL

3. 配置 ProxySQL

 3.1 配置 MySQL 主从服务器

 3.2 配置读写分离规则

3.3 配置 MySQL 用户认证 

3.4 配置监控用户(可选但推荐) 

4.验证配置

5.客户端连接 ProxySQL

6.性能优化建议

7.监控与维护

8.故障处理 


1.环境准备

配置主从复制的 MySQL 集群(1 主多从)Mysql主从复制部署-CSDN博客
开放必要的网络端口:
        ProxySQL 默认监听端口:6032(管理端口)、6033(客户端连接端口)
        MySQL 主从服务器端口(默认 3306)

2. 安装 ProxySQL

# 添加YUM仓库配置
wget https://repo.proxysql.com/ProxySQL/repo_pub_key -O /etc/pki/rpm-gpg/RPM-GPG-KEY-ProxySQL
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ProxySQLsudo tee /etc/yum.repos.d/proxysql.repo <<EOF
[proxysql]
name= ProxySQL YUM repository
baseurl=http://repo.proxysql.com/ProxySQL/proxysql-2.4.x/centos/\$releasever
enabled=1
EOFsudo yum install proxysql -y

3. 配置 ProxySQL

通过管理接口连接到 ProxySQL

# 启动 ProxySQL 服务
systemctl start proxysql
systemctl enable proxysqlyum install mysql -ymysql -u admin -padmin -h 127.0.0.1 -P6032

 3.1 配置 MySQL 主从服务器

use main;-- 添加主库
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (10, '主库IP', 3306);-- 添加从库(多个从库重复此步骤)
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, '从库1IP', 3306);
INSERT INTO mysql_servers(hostgroup_id, hostname, port) VALUES (20, '从库2IP', 3306);-- 检查添加结果
select * from main.mysql_servers;-- 应用配置
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;

 3.2 配置读写分离规则

-- 写操作路由到主库(hostgroup_id=10)
INSERT INTO mysql_query_rules(rule_id, active, match_digest, destination_hostgroup, apply)
VALUES (1, 1, '^INSERT|^UPDATE|^DELETE|^REPLACE|^CREATE|^ALTER|^DROP', 10, 1);-- 读操作路由到从库(hostgroup_id=20)
INSERT INTO mysql_query_rules(rule_id, active, match_digest, destination_hostgroup, apply)
VALUES (2, 1, '^SELECT', 20, 1);-- 应用配置
load mysql query rules to runtime;
load admin variables to runtime;
save mysql query rules to disk;
save admin variables to disk;

3.3 配置 MySQL 用户认证 

-- 添加MySQL客户端用户(与MySQL实际用户保持一致)
INSERT INTO mysql_users(username, password, default_hostgroup)
VALUES ('业务用户名', '业务用户密码', 10);-- 查询账户添加结果
select * from mysql_users;-- 应用配置
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL USERS TO DISK;

3.4 配置监控用户(可选但推荐) 

-- 在MySQL主从服务器上创建监控用户
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'proxysql'@'%' IDENTIFIED BY '监控用户密码';
flush privileges;-- 在ProxySQL中配置监控用户
set mysql-monitor_username='proxysql';
set mysql-monitor_password='监控用户密码';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

4.验证配置

检查服务器状态:

SELECT * FROM mysql_servers;
SELECT * FROM runtime_mysql_servers;

检查查询规则:

SELECT * FROM mysql_query_rules;
SELECT * FROM runtime_mysql_query_rules;

5.客户端连接 ProxySQL

主机:ProxySQL服务器IP
端口:6033
用户名:业务用户名
密码:业务用户密码mysql -uroot -p'Asdf#1234' -P6033 -h 127.0.0.1

6.性能优化建议

-- 调整连接池大小(根据实际情况调整)
UPDATE global_variables SET variable_value=1000 WHERE variable_name='mysql-threads';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;-- 启用压缩(减少网络传输)
UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-connections_compress';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;

7.监控与维护

查看服务器状态:

-- 查看主从服务器状态
SELECT hostgroup_id, hostname, port, status FROM runtime_mysql_servers;-- 查看查询统计
SELECT hostgroup, count_star, sum_time, first_seen, last_seen FROM stats_mysql_query_digest;

监控 ProxySQL 性能:

# 使用内置监控命令
proxysql-admin --help# 查看系统状态
top -p $(pgrep proxysql)

8.故障处理 

-- 将某个从库提升为主库(假设从库IP为192.168.1.101)
UPDATE mysql_servers SET hostgroup_id=10 WHERE hostname='192.168.1.101';
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;-- 配置主从自动切换
-- 定义主从复制组(hostgroup_id 10=主库,20=从库)
INSERT INTO mysql_replication_hostgroups (writer_hostgroup, reader_hostgroup)
VALUES (10, 20);
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
http://www.dtcms.com/a/301293.html

相关文章:

  • 【YOLO系列】YOLOv1详解:模型结构、损失函数、训练方法及代码实现
  • 前端面试专栏-前沿技术:31.Serverless与云原生开发
  • Spring AI 项目实战(二十一):Spring Boot + AI +DeepSeek驱动的智能题库系统(附完整源码)
  • Linux-文件与文本管理
  • 【语义分割】记录2:yolo系列
  • Java面试实战:安全框架与大数据技术深度解析
  • 代码随想录算法训练营二十八天|动态规划part01
  • C语言自定义数据类型详解(四)——联合体
  • 欧拉图与欧拉回路
  • Windows---动态链接库Dynamic Link Library(.dll)
  • 裴蜀定理应用
  • Ubuntu Linux 如何配置虚拟内存 —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录8
  • GRPO强化学习缓解多模态大模型OCR任务的幻觉思路及数据生成思路
  • 【Oracle】Oracle分区表“排雷“指南:当ORA-14400错误找上门时如何优雅应对
  • 【数据结构与算法】数据结构初阶:详解排序(二)——交换排序中的快速排序
  • 【Web安全】深入浅出理解“SQL注入-伪静态注入”及空格限制绕过技巧
  • linux 板卡实现vxi11服务
  • Qwen3安装使用教程:引领推理型大模型新时代
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-35,(知识点:三极管知识点,电路电压计算题,三极管电压计算,PNP三极管)
  • linux 部署 flink 1.15.1 并提交作业
  • 数据上新|最新省、地级市农业新质生产力2002-2025
  • Linux vimgrep 详解
  • 深度学习篇---优化器
  • 上位机知识篇---Tailwind CSS
  • Linux内核设计与实现 - 第15章 进程地址空间
  • python-列表推导式,迭代器和生成器,上下文管理器
  • Unity3D 平台宏定义
  • 双指针算法技巧
  • CCF-GESP 等级考试 2025年6月认证C++七级真题解析
  • PyQt5图形和特效(Qss的UI美化)