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

mysqldump导出千万行大表报错2013,如何安全备份且不损坏原表

MySQL大表导出故障解决方案

故障原因

你遇到的mysqld进程崩溃问题属于MariaDB 10.1.10的已知版本bug,该版本是2015年发布的旧版本,早已停止维护,处理1000万行以上大表的连续扫描请求时容易触发内存异常,进而导致进程退出,触发2013连接丢失报错。

不影响原表的临时导出方案

分块导出法(兼容性最高,失败不影响整体进度)

  1. 先单独导出表结构:
mysqldump -u root -p rent_scaff gv_faktur_header_history --no-data > D:\dobol\gv_faktur_header_history_struct.sql
  1. 查表主键的取值范围:
    执行SQL SELECT MIN(id) AS min_id, MAX(id) AS max_id FROM gv_faktur_header_history; 获取主键的最小、最大值。
  2. 按主键区间分批次导出数据,每次导出10万行,示例命令:
mysqldump -u root -p rent_scaff gv_faktur_header_history --where="id >= 1 AND id <= 100000" --no-create-info --skip-triggers >> D:\dobol\gv_faktur_header_history_data.sql

逐次调整id区间,直到覆盖全表所有数据即可。该方法就算某一批次导出触发进程崩溃,已经导出的数据不会丢失,重启MySQL后继续导出剩余区间即可,全程不会损坏原表数据。

一致性快照导出法(操作最简单)

使用InnoDB的一致性快照特性导出,全程不锁表,导出失败也不会影响原表正常使用:

mysqldump -u root -p --single-transaction --quick --max-allowed-packet=2G rent_scaff gv_faktur_header_history > D:\dobol\gv_faktur_header_history_full.sql

注意:不要加--skip-extended-insert参数,该参数会大幅降低导出效率、增加导出文件体积,反而更容易触发内存异常。

永久修复方案

  1. 升级数据库版本:将XAMPP升级到最新版本,或单独把MariaDB升级到10.6及以上的长期支持版本,从根本上解决版本bug导致的进程崩溃问题。
  2. 调整my.ini配置优化大表处理能力:
[mysqld]
# 8G内存可将缓冲池设为4G,提升大表查询性能
innodb_buffer_pool_size = 4G
# 延长连接超时时间,避免大查询被主动断开
wait_timeout = 1800
interactive_timeout = 1800
net_read_timeout = 1800
net_write_timeout = 1800

修改后重启MySQL服务即可生效。

原表可用性保证

只要导出过程中不执行ALTER、DROP这类DDL操作,InnoDB的事务机制会保证即使MySQL进程崩溃,重启后会自动回滚未完成的操作,原表不会损坏,可正常读写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:06:00