我有一个关于同时使用 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 表的一致备份?
我需要为我们的一位客户在同一台主机上设置多个 MySQL 实例。据我所知,我可以去:
mysqld_multi
这应该是企业级生产环境的长期解决方案。
我们需要将当前使用带有主动/被动节点的 RedHat 集群的现有环境迁移到没有集群软件的新 VM(将使用 VMware HA 解决方案,我知道会有所不同)。
有 3 个独立的 MySQL 实例/集群资源。我不知道这种分离的最初动机,但我认为客户希望能够自主停止/启动(补丁、升级......)不同的资源。
任何意见和建议 - 利弊和现实世界的经验是非常受欢迎的!