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

3
当我运行以下命令时,输出结果只包括'mytable'的创建语法,但没有数据:
mysqldump --single-transaction -umylogin -p mydatabase mytable > dump.sql

如果我不使用--single-transaction,由于无法锁定表格,就会出现错误。
如果我删除'mytable'(并进行DB),似乎正在创建INSERT语句,但整个DB非常庞大。
有没有一种方法可以转储表格——模式和数据——而不必锁定表格?
(我也尝试了INTO OUTFILE,但也缺少访问权限。)
1个回答

2
答案可能取决于您用于表的数据库引擎。InnoDB对非锁定备份提供了一些支持。鉴于您对权限的评论,您可能缺少所需的权限。最好的选择是创建一个没有索引的重复表。将要备份的表中的所有数据复制到新表中。如果您以易于分页数据的方式创建查询,则可以调整锁定的持续时间。我发现每次迭代10,000行通常非常快速。一旦有了这个查询,您就可以不断运行它,直到复制所有行为止。现在您有了一个副本,可以删除它、截断它或保留它并尝试使用最新数据更新它,并将其作为备份源利用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接