Amazon RDS 备份/快照服务是否锁定表?

Tom*_*m G 5 mysql backup amazon-rds

我们有一个 100+GB 的数据库。大多数表使用 InnoDB 引擎。

常规转储需要 1-2 小时。

如果我们迁移到 Amazon RDS,此备份会导致表锁定吗?

亚马逊是否使用简单的 mysqldump?

Rol*_*DBA 5

如果存在任何 MyISAM 表(正如您的措辞所暗示的那样),RDS 文档将指导您如何处理它以及期望发生什么

根据RDS 文档

使用不受支持的存储引擎进行自动备份

目前,仅 InnoDB 存储引擎支持 Amazon RDS 自动备份和数据库快照。将这些功能与其他 MySQL 存储引擎(包括 MyISAM)一起使用可能会导致从备份恢复时出现不可靠的行为。具体来说,由于像 MyISAM 这样的存储引擎不支持可靠的崩溃恢复,因此在发生崩溃时您的表可能会被损坏。因此,我们鼓励您使用InnoDB存储引擎。

如果您选择使用 MyISAM,您可以尝试使用 REPAIR 命令手动修复崩溃后损坏的表((请参阅: http ://dev.mysql.com/doc/refman/5.5/en/repair-table .html)。但是,正如 MySQL 文档中所述,您很可能无法恢复所有数据。

如果您想使用 MyISAM 表拍摄数据库快照,请按照下列步骤操作:

启动流程

1 停止 MyISAM 表的所有活动(即关闭所有会话)

2 锁定并刷新每个 MyISAM 表

3 发出 CreateDBSnapshot API 调用,或使用 RDSCLI rds-create-db-snapshot 命令。快照完成后,释放锁定并恢复 MyISAM 表上的活动。这些步骤强制 MyISAM 将内存中存储的数据刷新到磁盘,从而确保从数据库快照恢复时干净启动。

最后,如果您想将现有的 MyISAM 表转换为 InnoDB 表,可以使用 alter table 命令(例如,alter table TABLE_NAME engine=innodb;)。

相信我,大型 MyISAM 表在 Amazon RDS 中没有一席之地。InnoDB 更容易被接受。请要么将它们转换为 InnoDB,要么自行进行锁定和可能的表崩溃/修复。