华为云云数据库rdsRDS for MySQL备份任务失败分析思路_云淘科技

场景描述

客户使用RDS for MySQL数据库服务,使用自有备份脚本,通过mysqldump命令进行异机备份。备份数据到一台与RDS在不同子网的ECS主机,但备份任务运行300秒后就会中断,无法完成备份任务。

原因分析

为了排除网络问题,将执行备份任务的ECS主机更换为一台与RDS服务器同一子网的ECS主机上,备份任务执行成功。

网络排查反馈:跨子网只是在虚拟网络设备中转换,类似于网关,时延和带宽没有大的差异。
数据库排查反馈: 每次中断都是300秒就中断了,是因为RDS服务器端的参数导致,如果客户端300秒内没有完成数据写入,就会根据参数“net_write_timeout”的值断开数据库连接。

处理过程

了解mysqldump的备份的数据流向,采用的协议和端口。

mysqldump使用TCP协议连接RDS服务器的8635端口,建立连接后,通过网络将数据备份到本地磁盘。

分析两台ECS主机的差异点:

查看两台主机硬件配置是否一致:同为2CORE 6GB。
查看两台主机OS版本是否一致:同为centos7.4。

查看网卡速率是否一致。
查看内核参数配置是否一致,发现备份失败主机未做优化,备份成功的主机有做网络参数优化。

初步判断问题与TCP缓存参数设置相关,将成功ECS主机的内核参数覆盖到问题ECS主机上并使其生效,运行备份任务,备份任务未再中断,成功完成了备份。

解决方案

mysqldump在备份过程中会产生大数据读写,本场景是跨主机通过网络异机备份,备份端数据写入能力和TCP缓存无法匹配RDS端的发送能力,超时时间达到数据库写超时设定的300秒,最终导致备份中断。可以通过修改内核参数增加TCP的缓存,提高备份端网络处理能力来解决问题。

父主题: 备份恢复

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家