繁体   English   中英

如何在没有锁定的情况下在MySQL中转储单个表?

[英]How to dump a single table in MySQL without locking?

当我运行以下命令时,输出只包含'mytable'的创建语法,但没有数据:

mysqldump --single-transaction -umylogin -p mydatabase mytable > dump.sql

如果我删除--single-transaction,我会收到一个错误,因为我无法锁定表。

如果我删除'mytable'(并执行数据库),看起来它正在创建INSERT语句,但整个数据库都很庞大。

有没有办法可以转储表 - 架构和数据 - 而不必锁定表?

(我也试过INTO OUTFILE,但也缺乏访问权限。)

答案可能取决于您用于表的数据库引擎。 InnoDB支持非锁定备份。 鉴于您对权限的评论,您可能缺少相应的权限。

想到的最佳选择是创建一个没有指标的重复表。 将要备份的表中的所有数据复制到新表中。 如果以可轻松浏览数据的方式创建查询,则可以调整锁定的持续时间。 我发现每次迭代10,000行通常非常快。 获得此查询后,您可以继续运行它,直到复制完所有行。

现在您有了重复项,您可以删除它,截断它,或者保留它并尝试使用最新数据更新它并将其用作备份源。

雅各

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM