mysqldump导数报错error 2008处理办法

mysqldump导数报错error 2008处理办法

mysqldump导出dump文件时收到MySQL客户端从服务器获取数据时内存耗尽的报错。

🍌报错信息:

bash 复制代码
mysqldump: Out of memory (Needed 2356236304 bytes)
mysqldump: Got error: 2008: MySQL client ran out of memory when retrieving data from server

🐐可能原因:

单次导出的表行数太多,超过了mysql客户端的内存限制(可能是max_allowed_packet参数,默认256M)。

🐯解决办法:

mysqldump命令加上--single-transaction --skip-opt --extended-insert --quick参数。

也可以单独加上--opt参数,但是生产环境不建议,因为会锁表。

如果需要忽略包含特定字符的表,使用多个--ignore-table参数指定。

导出DBNAME库中的所有表,但不包括TABLE_1和TABLE_2:

bash 复制代码
mysqldump -h127.0.0.1 -P3306 -uroot --set-gtid-purged=OFF \
--single-transaction --skip-opt --add-drop-database --extended-insert --quick \
--ignore-table=DBNAME.TABLE_1 --ignore-table=DBNAME.TABLE_2 \
-B DBNAME > dump_DBNAME_`date +%F`.sql

拼接表名清单:

sql 复制代码
select group_concat(concat_ws('.',table_schema,table_name) separator ' --ignore-table=') 
as not_need_table_list
from information_schema.tables
where table_schema = 'DBNAME' and table_name like '%2023%'\G

📖 重要参数含义官方解释:

  • --opt

    This option, enabled by default, is shorthand for the combination of --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset. It gives a fast dump operation and produces a dump file that can be reloaded into a MySQL server quickly.

    Because the --opt option is enabled by default, you only specify its converse, the --skip-opt to turn off several default settings. See the discussion of mysqldump option groups for information about selectively enabling or disabling a subset of the options affected by --opt.

  • --quick

    This option is useful for dumping large tables. It forces mysqldump to retrieve rows for a table from the server a row at a time rather than retrieving the entire row set and buffering it in memory before writing it out.

  • --extended-insert

    Write INSERT statements using multiple-row syntax that includes several VALUES lists. This results in a smaller dump file and speeds up inserts when the file is reloaded.

References

1 https://dba.stackexchange.com/questions/157649/outofmemory-exception-duing-mysqldump

2 https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_opt

3 https://mp.weixin.qq.com/s?__biz=MzI2NzM1OTM4OA==\&mid=2247496679\&idx=1\&sn=bc9391542d1b42c64e1d49632c4cf969\&chksm=ea82b614ddf53f0225e2f7249f907f46552283bdb1970d5b340fc94ed9a72638044444542811\&scene=27

相关推荐
longxibo5 小时前
【AIBIZ低代码平台:能长出业务系统的平台】
android·低代码·rxjava
隔窗听雨眠10 小时前
MySQL三表JOIN执行内核与优化器决策机制
数据库·mysql·sql优化
Decay__10 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
AI_Gump13 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风15 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
隔窗听雨眠18 小时前
MySQL进程卡死的定位思路与恢复实践
mysql·故障排查·数据库运维
疯华整猫19 小时前
否决 Flutter 提案那天,我发现自己也说不清 Framework 管什么
android
为思念酝酿的痛19 小时前
C语言操作MySQL
数据库·mysql
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
传奇开心果编程1 天前
【Flutter踩坑排雷】第25课:ScrollController 误用坑|跳转失效、监听泄漏与“控制器未附加”
android·flutter·ios·移动开发·跨平台·dart·声明式ui