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

时间:2010-02-24 22:35:34

标签: mysql mysqldump

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

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

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

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

有没有办法可以转储表格 - 架构&数据 - 无需锁定表格?

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

1 个答案:

答案 0 :(得分:2)

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

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

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

雅各布