首页 > 解决方案 > Web 应用程序正在关闭,在我开始进行 MYSQL 转储之后

问题描述

尝试将进程推送到 linux 上的后台,并尝试使用-q命令:mysqldump -q -u root -p root database_name > dumpName.sql 似乎没有用。

标签: mysqljive

解决方案


这很可能是因为 mysqldump 在备份期间锁定了表。

当您使用 InnoDB 表时,您可以使用该--single-transaction参数。请务必阅读手册

  • --单笔交易

此选项将事务隔离模式设置为 REPEATABLE READ,并在转储数据之前向服务器发送 START TRANSACTION SQL 语句。它仅对诸如 InnoDB 之类的事务表有用,因为它会在发出 START TRANSACTION 时转储数据库的一致状态,而不会阻塞任何应用程序。

使用此选项时,您应该记住,只有 InnoDB 表以一致状态转储。例如,使用此选项时转储的任何 MyISAM 或 MEMORY 表仍可能更改状态。

在进行 --single-transaction 转储时,为确保转储文件有效(正确的表内容和二进制日志坐标),其他连接不应使用以下语句:ALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE桌子。一致性读取与这些语句不是隔离的,因此在要转储的表上使用它们会导致 mysqldump 执行的 SELECT 检索表内容以获取不正确的内容或失败。

--single-transaction 选项和 --lock-tables 选项是互斥的,因为 LOCK TABLES 会导致任何未决事务被隐式提交。

当您使用 MyISAM 表(不推荐)时,您几乎注定要失败。那么最好的选择是设置复制到另一台主机。要进行备份,请停止从属服务器上的复制,并在 mysqldump 完成后再次启动从属服务器。(google这个,这里就不详细解释了)。

另一种可能的解决方案是使用 Percona 的 xtrabackup。再次,谷歌并阅读整个手册!我怎么强调都不过分。


推荐阅读