首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不加锁的情况下在MySQL中转储单个表?

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

Stack Overflow用户
提问于 2010-02-25 06:35:34
回答 1查看 2.6K关注 0票数 3

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

代码语言:javascript
复制
mysqldump --single-transaction -umylogin -p mydatabase mytable > dump.sql

如果我删除--单个事务,我会得到一个错误,因为我不能锁定表。

如果我去掉'mytable‘(并运行数据库),看起来就像是在创建INSERT语句,但整个数据库是巨大的。

有没有一种方法可以转储表-- schema & data --而不必锁定表?

(我也尝试过OUTFILE,但也无法访问它。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-25 06:41:32

答案可能取决于您的表使用的数据库引擎。InnoDB对非锁定备份有一些支持。考虑到您对权限的注释,您可能缺少所需的权限。

我想到的最好的选择是创建一个不带索引的复制表。将要备份的表中的所有数据复制到新表中。如果您创建查询的方式可以轻松地对数据进行分页,则可以调整锁的持续时间。我发现每次迭代10,000行通常非常快。一旦有了这个查询,您就可以继续运行它,直到复制完所有行。

现在您有了一个副本,您可以删除它,截断它,或者保留它并尝试用最新的数据更新它,并将其用作备份源。

雅各布

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2330174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档