我对使用MyISAM和InnoDB的MySQL数据库的逻辑备份有疑问。
该mysqldump
实用程序支持以下两个选项:
--single-transaction-通过在单个事务中转储所有表来创建一致的快照。daccess-ods.un.org daccess-ods.un.org仅适用于存储在支持多版本的存储引擎中的表(当前仅InnoDB支持)。option自动关闭--lock-tables。
-x, --lock -all-tables-锁定所有数据库中的所有表。这可以通过在整个转储期间使用全局读锁定来实现。自动关闭--single-transaction和--lock-tables。
对于InnoDB,我们需要
--single-transaction
对于MyISAM,我们需要-锁定表或全部锁定表(以防需要跨数据库一致性)。
那么,应该如何备份混合数据库(同时使用MyISAM和InnoDB引擎的数据库)?
编辑:
为了澄清起见,可以将问题改写为:
lock- [all-] tables选项是否可以保证InnoDB表的一致性备份?