来自 mysql 和 information_schema 的 AWS RDS MyISAM 表和良好的快照

Rub*_*dob 2 amazon-rds

我想知道将所有 MyISAM 表移动到 RDS 中的 InnoDB 的话题。主要是因为我每天都在 RDS 控制台中收到这个烦人的警告。有一点很清楚,客户应用程序的表必须更改为 InnoDB(如果可能)。毫无疑问。但我担心的是“系统”表。如果我运行此查询:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'MyISAM'
Run Code Online (Sandbox Code Playgroud)

我得到了很多带有 MyISAm 表的表,这些表不是来自客户数据库而是来自 MySQL 本身,例如:

information_schema | COLUMNS                   | MyISAM |
information_schema | EVENTS                    | MyISAM |
Run Code Online (Sandbox Code Playgroud)

我称之为“系统表”。

也必须将这个“系统表”更改为 InnoDB?我没有找到这个表的任何具体内容,RDS 的警告信息也不清楚:

数据库实例 db-byhours-56 包含尚未迁移到 InnoDB 的 MyISAM 表。这些表可能会影响您执行时间点还原的能力。考虑将这些表转换为 InnoDB。请参阅 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html#Overview.BackupDeviceRestrictions

任何想法或意见?

谢谢 !

问题奖励:像 MEMORY 这样的其他引擎呢?我有一些客户几乎没有像那个引擎那样的表。这个引擎是否也会成为获得良好快照的问题?

Mic*_*bot 5

RDS 快照完全支持架构中的MyISAMmysql。其他地方的 MyISAM 表可能有问题。

永远不要更改mysql架构中的表。这将使您拥有一个可能永远不会再次启动的服务器。

重要的

不要将 mysql 数据库中的 MySQL 系统表从 MyISAM 转换为 InnoDB 类型。这是不受支持的操作。

https://dev.mysql.com/doc/refman/5.7/en/converting-tables-to-innodb.html

表中的例外mysql是因为 RDS 在快照期间会注意刷新和锁定这些表,因此它们在另一侧显示正常。这没有记录,但可以观察到。

中的表information_schema不是真正的表。也别管这些。

MEMORY表中的数据是暂时的,不会持久化到磁盘,因此它们不会在快照甚至重新启动时幸存下来。他们的定义应该没问题,但 RDS 实际上只用于InnoDB. (FEDERATED存储引擎被禁用。)