试图将进程推到Linux的后台,并尝试使用 -q 命令: mysqldump -q -u root -p root database_name> dumpName.sql似乎没有用。
答案 0 :(得分:1)
这很可能是事实,mysqldump在备份期间锁定了表。
使用InnoDB表时,可以使用--single-transaction
参数。确保阅读manual:
- -单次交易
此选项将事务隔离模式设置为REPEATABLE READ和 在转储之前将START TRANSACTION SQL语句发送到服务器 数据。仅对事务表(例如InnoDB, 因为这会转储当时数据库的一致状态 在发布START TRANSACTION时没有阻止任何应用程序。
使用此选项时,请记住只有InnoDB 表以一致状态转储。例如,任何MyISAM或 使用此选项转储的MEMORY表可能仍会更改状态。
正在执行-单个事务转储时,以确保有效 转储文件(正确的表内容和二进制日志坐标),否 其他连接应使用以下语句:ALTER TABLE, 创建表,删除表,重命名表,截断表。一致的 read不是与这些语句隔离的,因此在表上使用它们 被转储可能导致mysqldump执行的SELECT变为 检索表内容以获得错误的内容或失败。
--single-transaction选项和--lock-tables选项是 互斥,因为LOCK TABLES导致任何挂起的事务 隐式提交。
使用MyISAM表(不建议使用)时,您几乎注定要失败。最好的选择是设置复制到另一个主机。要进行备份,请在从属服务器上停止复制,并在mysqldump完成后再次启动从属服务器。 (谷歌浏览器,我在这里不再详细解释)。
另一种可能的解决方案是使用Percona的xtrabackup。再次,谷歌阅读整个手册!我不能太强调这一点。