具有只读权限时克隆MySQL数据库

时间:2012-04-22 08:53:47

标签: mysql database clone

我有database1(~500MB),可以user1以只读模式访问。
我有空数据库database2,具有user2的完全权限。

现在,我想将database1克隆到database2

我尝试了mysqldump,但它说access denied

有更好的方法吗?感谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,mysqldump尝试在转储之前锁定所有表 - 以便创建一致的快照。我假设user1没有权限这样做。

您可以在命令行上使用--single-transaction--skip-lock-tables。第一个选项对整个操作使用单个事务。如果所有表都是事务性的并且数据库很小,则这非常有效。如果数据库很大,这会对其他应用程序产生严重影响。

如有疑问,请先尝试--skip-lock-tables。但是,如果其他应用程序在转储期间进行了更改,则转储可能会不一致。

克隆数据库的完整示例:

mysqldump -h host1 -u user1 -ppass1 --single-transaction database1 |
mysql -h host2 -u user2 -ppass2 database2