使用不支持的 MySQL 存储引擎进行自动备份 - Amazon Relational Database Service

使用不支持的 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 的单可用区数据库实例创建数据库快照