我想将一个实时生产数据库复制到本地开发数据库中。是否有一种方法可以在不锁定生产数据库的情况下做到这一点?
我目前正在使用:
mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1
但是它在运行时锁定了每个表。
我想将一个实时生产数据库复制到本地开发数据库中。是否有一种方法可以在不锁定生产数据库的情况下做到这一点?
我目前正在使用:
mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1
但是它在运行时锁定了每个表。
当前回答
由于这些方法对我都不起作用,我只是做了一个:
mysqldump [...] | grep -v "LOCK TABLE" | mysql [...]
它将排除LOCK TABLE <x>和UNLOCK TABLES命令。
注意:希望您的数据中不包含该字符串!
其他回答
由于这些方法对我都不起作用,我只是做了一个:
mysqldump [...] | grep -v "LOCK TABLE" | mysql [...]
它将排除LOCK TABLE <x>和UNLOCK TABLES命令。
注意:希望您的数据中不包含该字符串!
要转储大型表,您应该结合使用——single-transaction选项和——quick。
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction
mysqldump -uuid -ppwd --skip-opt --single-transaction --max_allowed_packet=1G -q db | mysql -u root --password=xxx -h localhost db
这和那个说他迟到的人比起来差不多晚了,但在我的情况下(在Windows 7上通过WAMP下载MySQL),我不得不使用:
--skip-lock-tables