mysqldump混乱?

  • 如果我将locking我的表,而采取生产转储,同时如果用户将input任何数据的特定表。 这个具体的插入会发生什么? 它会被丢弃或成功创build转储后插入?
  • 如果在采取生产转储的时候我不会locking我的桌子。 会造成什么问题吗?

  • 哪一个是倾向于生产带或不带锁表的首选方式?

  • 如果你使用mysqldump来备份你的表,并且有人试图修改这个被locking的表,他们的更新将被阻塞,直到表被mysqldump解锁。
  • 如果您在尝试进行备份时未locking您的表,则完全可能导致您的备份处于不一致的状态。 根据您的应用程序,它可能会导致问题。
  • 如@ tsykoduk所述,最好从生产服务器的只读副本中进行备份。 如果这是不可能的,最好的解决scheme取决于你的环境。 例如,如果只使用InnoDB表,则可以使用--single-transaction命令运行mysqldump,以确保一致的备份而不会阻止更新。

MySQL文档更详细地描述了大部分这些选项:

http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html

最好从只读副本中取出备份,就像locking表格一样,任何写入操作都会出错。 此外,备份可能是一个相当耗费资源的操作,因此可以影响性能。

如果你没有一个只读的副本,那么我会build议寻找一个MySQL热备份产品(Percona有一个很好的,我记得)。

另外 – 如果您不locking表或使用热备份产品,则可能会导致无法获得完整备份。 IE,如果有人写信给一个表,并且在你运行备份的时候被locking了,你将会得到损坏的数据。