來自 mysql 和 information_schema 的 AWS RDS MyISAM 表和良好的快照
我想知道將所有 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
儲存引擎被禁用。)