MySQL从库同步速度慢的硬件原因_分析磁盘性能与内存占用

张开发
2026/4/13 4:30:16 15 分钟阅读

分享文章

MySQL从库同步速度慢的硬件原因_分析磁盘性能与内存占用
从库同步慢首要排查磁盘I/O瓶颈检查iostat指标、relay_log与datadir分盘、云盘突发性能、内存不足触发swap、SSD磨损及innodb_flush_log_at_trx_commit配置。从库同步慢先看磁盘 I/O 是不是瓶颈MySQL 从库同步延迟高硬件层面最常见就是磁盘写入跟不上主库的 binlog 应用节奏。尤其当 relay_log 和 innodb_data_home_dir 共享同一块机械盘SATA HDD或 SSD 被其他进程持续刷脏页占满带宽时Seconds_Behind_Master 就会稳定在几十秒甚至几分钟。用 iostat -x 1 观察 %util 是否长期 80%await 是否持续 20ms —— 这说明磁盘响应已排队relay_log 建议和 datadir 分盘存放避免主从日志写入争抢同一物理队列如果用的是云盘如 AWS gp3、阿里云 ESSD注意是否启用了突发性能模式Burst Balance 接近 0导致 IOPS 被限速内存不足导致 relay log 刷盘频繁从库靠 SQL 线程读取 relay_log 并执行但若 relay_log_space_limit 设得太小或系统内存吃紧触发内核 swap就会迫使 MySQL 频繁将 relay 日志刷到磁盘打断连续读取流程。relay_log_space_limit 默认为 0无限制但若手动设成 1G 又没配足够内存容易触发强制轮转和 fsync检查 free -h 中 available 是否低于 innodb_buffer_pool_size 的 1.2 倍 —— 否则 InnoDB 缓冲池抖动会拖慢 SQL 线程解析速度确认 vm.swappiness 是否 1生产环境建议设为 1 或 0避免因 swap 引发 IO 放大SSD 耐久性下降影响随机写性能用了一年以上的消费级 NVMe 盘如 Samsung 970 EVO或老旧 SATA SSD在大量 relay log 小文件写入 InnoDB redo log 持续刷盘场景下可能因磨损均衡策略失效导致随机写延迟飙升表现为 SHOW PROCESSLIST 中 SQL 线程常处于 Writing to net 或 Updating 状态但进展缓慢。 AI Code Reviewer AI自动审核代码

更多文章