我有database1
(~500MB),可以通过只读模式访问user1
。
我有空数据库database2
,具有完全权限user2
。
现在,我想克隆database1
到database2
.
我试过mysqldump
了,但它说access denied
。
有更好的办法吗?谢谢。
默认情况下,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