Dim*_*lov 9 mysql innodb myisam mysqldump
我有一个关于同时使用 MyISAM 和 InnoDB 的 MySQL 数据库的逻辑备份的问题。
该mysqldump实用程序支持以下两个选项:
--single-transaction - 通过在单个事务中转储所有表来创建一致的快照。仅适用于存储在支持多版本的存储引擎中的表(目前只有 InnoDB 支持)[...] 选项自动关闭 --lock-tables。
-x, --lock-all-tables - 锁定所有数据库中的所有表。这是通过在整个转储期间获取全局读锁来实现的。自动关闭 --single-transaction 和 --lock-tables 。
对于 InnoDB,我们需要 --single-transaction
对于 MyISAM,我们需要 - 锁定表或锁定所有表(以防我们需要跨数据库一致性)。
那么,混合数据库(同时使用 MyISAM 和 InnoDB 引擎的数据库)应该如何备份?
编辑:
为了澄清,这个问题可以重新表述如下:
lock-[all-]tables 选项是否保证 InnoDB 表的一致备份?
使用 mysqldump,您只能--single-transaction在所有表都是 InnoDB 时安全使用,否则您的备份不一致。
如果您需要混合备份,那么您需要备份中的lock-tables所有表(默认),这对所有引擎都是安全的。还值得一提的是,默认选项将确保您的备份是安全的,您无需打开任何特殊标志。
注意:如果您确实有混合组合,请查看 xtrabackup。它只会在备份的 MyISAM 阶段锁定。
| 归档时间: |
|
| 查看次数: |
9372 次 |
| 最近记录: |