

# 使用不支持的 MySQL 存储引擎进行自动备份
<a name="Overview.BackupDeviceRestrictions"></a>

对于 MySQL 数据库引擎，仅支持将自动备份用于 InnoDB 存储引擎。将这些功能与 MyISAM 等其他 MySQL 存储引擎配合使用，可能会导致在从备份还原时出现性能不可靠问题。具体而言，由于类似 MyISAM 的存储引擎不支持可靠的崩溃恢复，因此如果发生崩溃，就可能会损坏您的表。为此，我们建议您使用 InnoDB 存储引擎。
+ 要将现有的 MyISAM 表转换为 InnoDB 表，您可以使用 `ALTER TABLE` 命令，例如：`ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;`
+ 如果选择使用 MyISAM，您可以尝试使用 `REPAIR` 命令手动修复崩溃后损坏的表。有关更多信息，请参阅 MySQL 文档中的 [REPAIR TABLE 语句](https://dev.mysql.com/doc/refman/8.0/en/repair-table.html)。然而，正如 MySQL 文档所指出，您可能再也不能恢复所有数据。
+ 如果要在还原前拍摄 MyISAM 表的快照，请执行以下步骤：

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

     可以通过为从 `SHOW FULL PROCESSLIST` 命令返回的每个进程调用 [mysql.rds\$1kill](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html) 命令来关闭所有会话。

  1. 锁定并刷新每个 MyISAM 表。例如，以下命令锁定并刷新两个名为 `myisam_table1` 和 `myisam_table2` 的表：

     ```
     mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
     ```

  1. 创建数据库实例或多可用区数据库集群的快照。完成快照后，释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁：

     ```
     mysql> UNLOCK TABLES;
     ```

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