2 个数据库被锁定,但只有一个可以成功转储(备份为 *.sql 文件)...失败

2 个数据库被锁定,但只有一个可以成功转储(备份为 *.sql 文件)...失败

我有这种情况

  • mysql 服务器上有 2 个大型数据库 - srv1

  • 我需要将两者都转移到新服务器 - srv2

所以

  • 我使用 sql 命令“FLUSH TABLES WITH READ LOCK;”来停止所有修改
  • 然后我使用 shell 命令“mysqldump --user=root --password=blaablaaa --databases shop1 shop2 > “e:\backup\dump_both.sql”

  • 我完全被困在这里,因为只有 SHOP1 数据库被正确转储,然后文件大小停止增长,很长时间没有发生任何事情。为什么——它恰好是在应该转储第二个数据库的时刻。


我尝试解锁数据库,然后两个数据库都可以完美转储,但数据库锁定时只能转储一个。当然,出于一致性考虑,我需要锁定它们。但为什么在这种情况下第二个数据库无法转储?

有任何想法吗 ?

注意1:shop1数据库仅使用myisam表,但shop2主要使用innodb。

答案1

FLUSH TABLES WITH READ LOCK 应在备份会话中执行。尝试使用 --flush-logs 和 --lock-all-tables 选项备份 MyISAM 表;并尝试使用 --single-transaction 选项备份 InnoDb 表。更多信息请参阅文档 -mysqldump — 数据库备份程序

相关内容