如何优化MySQL主从复制的性能?

优化MySQL主从复制的性能需要从硬件、配置、架构设计和运维策略等多方面入手。以下是详细的优化方案:

一、减少主库写入压力

1. ‌主库优化‌

二进制日志(binlog)优化‌:

  • 使用 binlog_format=ROW 以获得更高效的复制和更少的数据冲突(但日志量可能增大)。
  • 设置 sync_binlog=1 确保事务提交时同步写入binlog(牺牲部分性能换取数据安全)。
  • 设置 innodb_flush_log_at_trx_commit=1 保证事务持久性(同样可能牺牲性能)。

延迟写入优化‌:

  • 启用组提交(Group Commit): MySQL 5.6+默认开启,减少磁盘I/O次数。
  • 使用异步写入(innodb_flush_log_at_trx_commit=2)提高性能,但可能丢失最近1秒的数据。

2. ‌应用层优化‌

  • 批量写入‌: 合并多个写操作为批量事务,减少事务提交次数。
  • 读写分离‌: 将读操作路由到从库,减轻主库压力。

二、提升从库复制性能

1. ‌并行复制(Multi-Threaded Replication)‌

配置并行复制‌(MySQL 5.6+支持):


# 从库配置 my.cnf
slave_parallel_workers=4      # 并行线程数(建议设置为CPU核心数的50%~70%)
slave_parallel_type=LOGICAL_CLOCK  # 基于事务依赖关系的并行(MySQL 5.7+)

监控并行复制效率‌:

SHOW STATUS LIKE 'Slave_parallel_workers%';

2. ‌从库硬件优化‌

  • 使用SSD‌: 提升磁盘I/O性能,尤其是中继日志(relay log)的写入。
  • 增加内存‌: 配置更大的 innodb_buffer_pool_size(通常为物理内存的70%~80%)。

3. ‌优化中继日志‌

  • 设置 relay_log_recovery=1 确保从库崩溃后自动恢复。
  • 定期清理中继日志(需确保复制已完成):
STOP SLAVE; RESET SLAVE; START SLAVE;

三、网络优化

1. ‌减少网络延迟‌

  • 主从库部署在同一机房或低延迟网络环境中。
  • 使用专用网络带宽,避免与其他服务共享。

2. ‌压缩二进制日志‌

  • 启用binlog压缩(MySQL 8.0+):
binlog_transaction_compression=ON
  • 使用外部工具(如 gzip)压缩备份文件传输。

四、架构优化

1. ‌多级复制(级联复制)‌

主库 → 中间库(分发层) → 多个从库,分散主库压力。

主库(Master) → 中间库(Relay Slave) → 从库1(Slave1)↘ 从库2(Slave2)

2. ‌半同步复制‌

  • 确保至少一个从库收到binlog后再提交事务(减少数据丢失风险):
# 主库配置
plugin_load="rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled=1# 从库配置
plugin_load="rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled=1

3. ‌分片架构‌

  • 将数据按业务分片(Sharding),分散写入压力。

五、配置与监控

1. ‌关键参数调整‌

  • 从库配置 read_only=1 防止误写入。
  • 设置 slave_net_timeout=60(默认3600秒),减少网络超时等待。

2. ‌监控工具‌

  • 内置命令‌:
SHOW SLAVE STATUS\G    -- 检查复制状态与延迟
SHOW PROCESSLIST;      -- 查看复制线程
  • 外部工具‌:
    Percona Monitoring and Management(PMM)
    Prometheus + Grafana + MySQL Exporter

3. ‌延迟处理‌

  • 自动跳过错误‌(谨慎使用):
SET GLOBAL sql_slave_skip_counter=1;  -- 跳过单个错误

重新同步数据‌:通过 mysqldump 或 xtrabackup 重建从库。

六、高级优化策略

1. ‌GTID复制‌

启用GTID(全局事务标识符)简化故障切换:

# 主从库配置
gtid_mode=ON
enforce_gtid_consistency=ON

2. ‌过滤复制‌

仅复制必要数据(减少从库负载):

# 从库配置
replicate_do_db=db1,db2       -- 仅复制指定库
replicate_ignore_table=db1.logs  -- 忽略特定表

3. ‌Proxy中间件‌

  • 使用 ‌ProxySQL‌ 或 ‌MaxScale‌ 实现自动读写分离和负载均衡。

七、性能优化对比表

优化方向‌具体措施‌适用场景‌‌风险/成本‌
并行复制设置 slave_parallel_workers高并发写入,从库延迟严重配置不当可能导致数据不一致
半同步复制启用 rpl_semi_sync_master要求数据强一致性增加主库响应时间
二进制日志压缩binlog_transaction_compression=ON网络带宽不足仅支持MySQL 8.0+
多级复制级联架构分散压力大规模从库集群运维复杂度增加

八、注意事项

  • 测试环境验证‌: 所有优化操作需先在非生产环境验证。
  • 逐步调整参数‌: 避免一次性修改多个关键参数。
  • 监控先行‌: 优化后需持续监控复制延迟和系统负载。

通过以上优化策略,可显著提升MySQL主从复制的性能和稳定性,降低延迟风险,适应高并发场景。需根据实际业务负载和硬件资源灵活调整方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/79494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL安装完全指南:从零开始到配置优化(附避坑指南)

🔥 前言:为什么你总是装不好MySQL? (实话实说)每次看到新手在MySQL安装环节疯狂踩坑,老司机都忍不住想摔键盘!明明官网下载的安装包,怎么就会报错呢?为什么别人的环境变…

密码学_加密

目录 密码学 01 密码基础进制与计量 02 加解密基操 替换 移位 编码 编码 置换 移位 加解密强度 03 对称加密算法(私钥) 工作过程 缺陷 对称加密算法列举? DES DES算法架构 DES分组加密公式 DES中ECB-CBC两种加密方式 3DES 由于DES密钥太短&#xf…

轻量级RTSP服务模块:跨平台低延迟嵌入即用的流媒体引擎

在音视频流媒体系统中,RTSP(Real-Time Streaming Protocol)服务模块通常扮演着“视频分发中心”的角色,它将编码后的音视频内容转为标准的流媒体格式,供客户端(播放器、云端平台、AI模块等)拉流…

Nginx发布Vue(ElementPlus),与.NETCore对接(腾讯云)

案例资料链接:https://download.csdn.net/download/ly1h1/90745660 1.逻辑说明 1.1 逻辑示意图 # 前端请求处理逻辑图浏览器请求流程: 1. 浏览器发起请求├─ 开发环境(DEV)│ ├─ 请求URL: http://192.168.0.102:3000/api/xxx│ └─ 被Vite代理处理└─ 生产…

解析机器人 2.0.2 | 支持超过50种短视频平台的链接解析,无水印提取,多功能下载工具

解析机器人是一款功能强大的工具软件,登录即可解锁会员特权。它支持超过50种短视频平台的链接解析,包括抖音、快手、西瓜、bilibili等,并能实现无水印提取。此外,还提供P2P下载、磁力链等多种下载方式,确保用户能够快速…

C++ - 数据容器之 forward_list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)

一、创建与初始化 引入 <forward_list> 并使用 std 命名空间 #include <forward_list>using namespace std;创建一个空 forward_list forward_list<int> fl;创建一个包含 5 个元素&#xff0c;每个元素初始化为 0 的 forward_list forward_list<int&g…

Python爬虫实战:获取企信网指定公司基本工商数据并分析,为客户选择公司做参考

一、引言 在商业决策、市场调研等众多领域,企业的基本工商信息是至关重要的参考依据。企信网作为权威的企业信息查询平台,汇聚了海量企业的详细信息。借助 Python 的爬虫技术,能够自动从企信网获取指定公司的工商信息,再运用数据分析和机器学习方法对这些信息进行深入挖掘…

STM32部分:2-1、STM32CubeMX介绍

飞书文档https://x509p6c8to.feishu.cn/wiki/BTv4wW3O7ita1dkQGkrcBb9rnXg 资料手册 英文手册 https://www.stmcu.com.cn/Designresource/detail/user_manual/711316 中文手册 https://www.stmcu.com.cn/Designresource/detail/localization_document/710583 界面说明 首…

SVM实战:从理论到鸢尾花数据集的分类可视化

SVM实战&#xff1a;从理论到鸢尾花数据集的分类可视化 在机器学习的广阔领域中&#xff0c;支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;作为一种经典且强大的分类算法&#xff0c;备受瞩目。它凭借独特的思想和卓越的性能&#xff0c;在模式识…

陶瓷陶器缺陷检测VOC+YOLO格式938张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;938 标注数量(xml文件个数)&#xff1a;938 标注数量(txt文件个数)&#xff1a;938 标注…

通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】

文章目录 前言一、Prometheus、Grafana1.1 Prometheus简介1.2 Grafana简介1.3 Prometheus的核心组件1.4 Prometheus优点1.5 Prometheus缺点 二、部署Docker三、主节点部署PrometheusGrafana3.1 部署Prometheus3.2 防火墙开放端口3.3 访问服务3.4 安装Grafana3.5 防火墙开放端口…

华为云Flexus+DeepSeek征文|DeepSeek-V3商用服务开通教程

目录 DeepSeek-V3/R1商用服务开通使用感受 DeepSeek-V3/R1商用服务开通 1、首先需要访问ModelArts Studio_MaaS_大模型即服务_华为云 2、在网站右上角登陆自己的华为云账号&#xff0c;如果没有华为云账号的话&#xff0c;则需要自己先注册一个。 3、接着点击ModelArts Stu…

ubuntu20.04修改默认网卡名称为eth*

在Ubuntu 20.04.6中&#xff0c;遵循可预测网络接口设备命名规则&#xff0c;网卡名称默认可能是以"enp*"、"ens*"等开头的格式&#xff0c;但是实际使用过程中&#xff0c;某些应用只能读取eth*的网卡&#xff0c;需要修改。 查看网卡名称 ip link show …

linux下抓包工具--tcpdump介绍

文章目录 1. 前言2. 命令介绍3. 常见选项3.1. 接口与基本控制3.2 输出控制3.3 文件操作3.4 高级调试 4. 过滤表达式4.1 协议类型4.2 方向与地址4.3 逻辑运算符 5. 典型使用场景5.1 网络故障排查5.2 安全分析与入侵检测5.3 性能分析与优化 linux下抓包工具--tcpdump介绍 1. 前言…

AI大模型-RAG到底能做些什么?

RAG常见的应用场景&#xff0c;有以下几个方面&#xff1a; 1.智能客服系统&#xff1a;比如电商领域&#xff0c;对客户提出的常见问题&#xff0c;进行自动回复。减少人力成本。 2.人力资源管理&#xff1a;一个新的员工&#xff0c;入职一家大型公司&#xff0c;公司中有各…

C++ unordered_set unordered_map

上篇文章我们讲解了哈希表的实现&#xff0c;这节尝试使用哈希表来封装unordered_set/map 1. unordered_set/map的框架 封装的过程实际上与set/map类似&#xff0c;在unordered_set/map层传递一个仿函数&#xff0c;用于取出key值 由于我们平常使用的都是unordered_set/map&…

REST API、FastAPI与Flask API的对比分析

以下是关于REST API、FastAPI与Flask API的对比分析&#xff0c;涵盖架构设计、性能表现、开发效率等核心维度&#xff1a; 一、核心定位与架构差异 REST API 本质&#xff1a;一种基于HTTP协议的架构风格&#xff0c;强调资源化操作&#xff08;通过URI定位资源&#xff09;、…

实战交易策略 篇二十二:情绪流龙头交易策略

文章目录 系列文章理论基础股市的本质资金与情绪题材龙头股龙头战法实战技法情绪流技术分析择时实操情绪流龙头战法要诀六大步骤九大术法买卖点量化标准系列文章 实战交易策略 篇一:奥利弗瓦莱士短线交易策略 实战交易策略 篇二:杰西利弗莫尔股票大作手操盘术策略 实战交易策…

用VNA进行天线阻抗匹配的实例大图

比如我这天线&#xff0c;在7Mhz时不谐振&#xff0c;我进行匹配 天线的阻抗很高&#xff0c;大约是在500-1400欧&#xff0c;而等效电容电感很小。 所以我考虑使用阻抗变压器降低阻抗。 1。测试天线阻抗&#xff0c;电阻相当高&#xff0c;等效电容很小。 2。通过磁环匹配到…

一个读写excel的简单程序(golang)

最近总有一些临时统计的需求&#xff0c;比如其他团队生产的一批数据&#xff0c;需要确认这批数据是否入到数仓&#xff0c;提供的列表就是一个excel&#xff0c;我们就需要读取excel中的所有数据&#xff0c;之后查询数仓数据库确认这批数据是否存在&#xff0c;并分别将存在…