Amazon-Rds

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

  • February 15, 2018

我想知道將所有 MyISAM 表移動到 RDS 中的 InnoDB 的主題。主要是因為我每天在 RDS 控制台中都有這個煩人的警告。有一點很清楚,客戶應用程序的表必須更改為 InnoDB(如果可能)。對此毫無疑問。但讓我擔心的是“系統”表。如果我執行此查詢:

SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE = 'MyISAM'

我得到了很多不是來自客戶數據庫而是來自 MySQL 本身的 MyISAm 表的表,例如:

information_schema | COLUMNS                   | MyISAM |
information_schema | EVENTS                    | MyISAM |

讓我稱之為“系統表”。

也必須將這個“系統表”更改為 InnoDB?我沒有找到任何具體的這些表,並且 RDS 的警告消息並不清楚:

數據庫實例 db-byhours-56 包含尚未遷移到 InnoDB 的 MyISAM 表。這些表會影響您執行時間點恢復的能力。考慮將這些表轉換為 InnoDB。請參閱 http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.BackingUpAndRestoringAmazonRDSInstances.html#Overview.BackupDeviceRestrictions

有什麼想法或意見嗎?

謝謝 !

***問題獎勵:***像MEMORY這樣的其他引擎呢?我有一些客戶很少有像那個引擎這樣的桌子。這個引擎是否也是獲得良好快照的問題?

RDS 快照完全支持架構中的MyISAM表。mysql可能存在問題的是其他地方的 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儲存引擎被禁用。)

引用自:https://dba.stackexchange.com/questions/197879