使用不支持的 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 表的快照,请执行以下步骤:
-
停止 MyISAM 表的所有活动(即关闭所有会话)。
可以通过为从
SHOW FULL PROCESSLIST
命令返回的每个进程调用 mysql.rds_kill 命令来关闭所有会话。 -
锁定并刷新每个 MyISAM 表。例如,以下命令锁定并刷新两个名为
myisam_table1
和myisam_table2
的表:mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
-
创建数据库实例或多可用区数据库集群的快照。完成快照后,释放 MyISAM 表上的锁定和恢复活动。可以使用以下命令为表解锁:
mysql> UNLOCK TABLES;
这些步骤强制 MyISAM 将存储在内存中的数据刷新到磁盘上,这可确保从数据库快照还原后,以清空状态开始下一操作。有关创建数据库快照的更多信息,请参阅为 Amazon RDS 的单可用区数据库实例创建数据库快照。
-