使用不支持的 MySQL 存储引擎进行自动备份 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

对于 MySQL 数据库引擎,仅支持将自动备份用于 InnoDB 存储引擎。将这些功能与 MyISAM 等其他 MySQL 存储引擎配合使用,可能会导致在从备份还原时出现性能不可靠问题。具体而言,由于类似 MyISAM 的存储引擎不支持可靠的崩溃恢复,因此如果发生崩溃,就可能会损坏您的表。为此,我们建议您使用 InnoDB 存储引擎。

  • 要将现有的 MyISAM 表转换为 InnoDB 表,您可以使用 ALTER TABLE 命令,例如:ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

  • 如果选择使用 MyISAM,您可以尝试使用 REPAIR 命令手动修复崩溃后损坏的表。有关更多信息,请参阅 MySQL 文档中的 REPAIR TABLE 语句。然而,正如 MySQL 文档所指出,您可能再也不能恢复所有数据。

  • 如果要在还原前拍摄 MyISAM 表的快照,请执行以下步骤:

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

      可以通过为从 SHOW FULL PROCESSLIST 命令返回的每个进程调用 mysql.rds_kill 命令来关闭所有会话。

    2. 锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新两个名为 myisam_table1myisam_table2 的表:

      mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
    3. 创建数据库实例或多可用区数据库集群的快照。完成快照后,释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁:

      mysql> UNLOCK TABLES;

    这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上,这可确保从数据库快照还原后,以清空状态开始下一操作。有关创建数据库快照的更多信息,请参阅为 Amazon RDS 的单可用区数据库实例创建数据库快照