You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用gzip命令导出压缩MySQL数据库并导入至AWS RDS

MySQL gzip 压缩导出命令用法

以下为生产环境验证过的可直接执行的命令,按场景选择即可:

  • 单库导出(默认适配后续RDS导入要求,不锁业务、兼容RDS权限限制)
    mysqldump -u 源库用户名 -p -h 源库连接地址 --single-transaction --routines --triggers --events --set-gtid-purged=OFF 待导出的库名 | gzip -9 > 自定义备份名.sql.gz

参数说明:

  • --single-transaction:针对InnoDB引擎做一致性快照导出,全程不阻塞业务读请求
  • --routines --triggers --events:同步导出存储过程、触发器、定时任务,不会遗漏库内自定义逻辑
  • --set-gtid-purged=OFF:关闭GTID执行记录写入,避免导入RDS时因超管权限不足报错
  • -9:gzip最高压缩比,若导出服务器CPU资源紧张,可调整为1-3的压缩等级,压缩速度更快
    执行后命令行会提示输入数据库密码,禁止把明文密码直接拼接在-p参数后,会被记录在shell历史中存在安全风险。
  • 全实例导出
    mysqldump -u 源库用户名 -p -h 源库连接地址 --single-transaction --routines --triggers --events --set-gtid-purged=OFF --all-databases | gzip -9 > 全实例备份.sql.gz

注意:全实例备份导入RDS时必须排除系统库,不可直接导入。

压缩备份导入AWS RDS操作步骤

前置准备

  • 优先选择和RDS同VPC、同可用区的EC2作为操作机,公网环境仅适合1G以下的小备份导入,避免传输中断、速度过慢
  • 确认操作机安全组已放通到RDS实例3306端口的访问规则
  • 提前在RDS上创建空目标库,字符集、排序规则和源库保持一致(常用配置为utf8mb4/utf8mb4_general_ci)
  • 临时调整RDS参数组配置:将max_allowed_packet设置为256M以上,wait_timeout设置为28800,避免大字段写入、长连接导入中断;10G以上的大库可临时升级RDS实例规格,导入完成后再降配,能大幅缩短导入耗时
  • 确认使用的RDS数据库账号拥有目标库的全部读写、建表、修改权限

导入执行

无需提前解压压缩文件,直接通过管道导入,节省操作机磁盘空间:
gunzip < 本地备份文件路径.sql.gz | mysql -h RDS实例端点地址 -u RDS用户名 -p 提前创建的目标库名

如果是全实例备份导入,命令末尾不需要指定库名,但必须先手动解压备份文件,删除mysql、information_schema、performance_schema、sys四个系统库的所有导出语句,避免覆盖RDS内置系统配置导致实例故障。

大文件导入优化技巧

  • 后台挂载进程避免终端断开:用nohup运行导入任务,日志输出到本地文件方便排查
    nohup bash -c 'gunzip < 备份文件路径.sql.gz | mysql -h RDS端点 -u RDS用户名 -p 目标库名' > import_log.log 2>&1 &
  • 导入前临时关闭RDS自动备份、慢查询日志、通用查询日志,导入完成后再重新开启,可减少冗余IO消耗提升导入速度

常见报错处理

  • 报GTID权限相关错误:说明导出时未加--set-gtid-purged=OFF参数,可解压备份文件,删除所有SET @@GLOBAL.GTID_PURGED开头的语句后重新压缩导入
  • 报主键/唯一键冲突:说明之前导入中断残留了部分数据,需要清空目标库所有表后重新导入
  • 报连接超时断开:检查RDS安全组规则、wait_timeout参数配置,确认操作机到RDS的网络无丢包

内容的提问来源于stack exchange,提问作者stalinrajindian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:57:18