当我运行以下命令时,输出只包含'mytable'的创建语法,但没有数据:
mysqldump --single-transaction -umylogin -p mydatabase mytable > dump.sql
如果我删除--single-transaction,我会收到一个错误,因为我无法锁定表。
如果我删除'mytable'(并执行数据库),看起来它正在创建INSERT语句,但整个数据库都很庞大。
有没有办法可以转储表格 - 架构&数据 - 无需锁定表格?
(我也试过INTO OUTFILE,但也缺乏访问权限。)
答案 0 :(得分:2)
答案可能取决于您用于表的数据库引擎。 InnoDB支持非锁定备份。鉴于您对权限的评论,您可能缺少相应的权限。
想到的最佳选择是创建一个没有指标的重复表。将要备份的表中的所有数据复制到新表中。如果以可轻松浏览数据的方式创建查询,则可以调整锁定的持续时间。我发现每次迭代10,000行通常非常快。获得此查询后,您可以继续运行它,直到复制完所有行。
现在您有了重复内容,您可以删除它,截断它,或者保留它并尝试使用最新数据更新它并将其用作备份源。
雅各布