尝试将进程推送到 linux 上的后台,并尝试使用-q命令:mysqldump -q -u root -p root database_name > dumpName.sql 似乎没有用。
1 回答
这很可能是因为 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。再次,谷歌并阅读整个手册!我怎么强调都不过分。