phpMyAdmin GUI导出超大库必然失败,因其PHP脚本需将整表数据加载至内存再拼SQL,遇百万行即OOM;必须改用mysqldump命令行,关键参数包括--single-transaction、--quick、--skip-lock-tables、--compress及--net-read/write-timeout。

phpMyAdmin GUI导出超大库必然失败,这不是配置问题
phpMyAdmin 5.2 的导出功能本质是 PHP 脚本把整张表或整个库的数据 load 到内存里,再拼成 SQL 字符串输出。哪怕你把 memory_limit 调到 2G、max_execution_time 设为 0,遇到几百万行的表,PHP 进程仍会因内存耗尽崩溃,典型错误是 Fatal error: Allowed memory size of XXX bytes exhausted 或浏览器卡死无响应。这不是“没调够”,而是架构限制——它压根不是为大数据流式处理设计的。
必须改用 mysqldump 命令行,且关键参数不能少
真正能稳定导出超大数据库(尤其 ≥ 100 万行或 ≥ 500MB)的是 mysqldump,它由 MySQL 服务端逐块读取、管道输出,不依赖 PHP 内存。执行前请确认你有服务器 SSH 权限和 MySQL 用户权限。
-
--single-transaction:对 InnoDB 表做一致性快照,避免锁表(MyISAM 不支持,需停写) -
--quick:强制逐行获取结果,防止客户端缓存整结果集(没它就可能 OOM) -
--skip-lock-tables:显式跳过LOCK TABLES,和--single-transaction配合更稳妥 -
--compress:启用客户端/服务端压缩,减少网络传输量(远程导出必加) -
--net-read-timeout=7200 --net-write-timeout=7200:防连接中断,尤其导出几百 GB 时
示例命令:
mysqldump --single-transaction --quick --skip-lock-tables --compress --net-read-timeout=7200 --net-write-timeout=7200 -u root -p your_database > your_database.sql
单文件太大?按表分卷比按字节切片安全得多
别用 split -b 1G 直接切 .sql 文件——它会把一条长 INSERT 拆到两个文件里,后续导入直接报语法错误。正确做法是按表粒度拆分:
- 先用
mysql -Nse "SELECT table_name FROM information_schema.tables WHERE table_schema='your_database'" your_database获取表名列表 - 对每张表单独执行
mysqldump --no-create-info your_databasetable_name> > table_name.sql - 加
--skip-extended-insert可提升恢复容错性(单条失败不影响后续),但文件体积变大
导出后立刻用 gzip -t table_name.sql.gz 校验压缩包完整性,别等传到远端才发现损坏。
安装、修复、更新或打包一个基于 Python 和 PyMySQL 实现的 Windows `mysql` 命令。适用于用户希望在 PowerShell/CMD 中输入 `mysql` 时重定向到 Python 实现、需要交互式输入 MySQL 连接信息、需要同步到当前用户本地 bin 目录,或需要将该能力封装成可公开复用的 Codex skill。
导出后传输建议用 rsync,不是 scp
几十 GB 的 .sql.gz 文件用 scp 传,失败就得重来;rsync 支持断点续传,实测节省大量时间。关键参数是 --partial(保留未传完的临时文件):
rsync -avz --partial --progress your_database_*.sql.gz user@host:/backup/
如果目标磁盘空间紧张,先用 rsync --dry-run 预估总大小。另外,用 pigz 替代 gzip(需提前安装),多核压缩速度可提升 3–5 倍。
真正容易被忽略的是 MySQL 服务端的 wait_timeout 和 interactive_timeout:即使客户端设了超时,服务端默认 8 小时(28800 秒)也可能提前断连。务必同步检查并调大这两个值,否则所有客户端超时设置都白搭。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










