使用 Amazon RDS for MySQL 時,如何對「MySQL HA_ERR_RECORD_FILE_FULL」錯誤進行疑難排解?

2 分的閱讀內容
0

嘗試寫入 Amazon Relational Database Service (Amazon RDS) MySQL DB 執行個體時,我收到下列錯誤訊息: 「Error_code: 1114; handler error HA_ERR_RECORD_FILE_FULL」,如何解決此錯誤?

簡短說明

此錯誤最常發生在造成複寫失敗的讀取複本,或是寫入資料的資料表已滿時。此錯誤也會有下列其中一個原因:

  1. 傳送錯誤訊息的資料表是記憶體引擎資料表,而且該資料表已達到其大小上限。
  2. 該資料表是 MyISAM 引擎資料表,而且已達到其指標大小上限。
  3. 該資料表使用 InnoDB 引擎,而且 InnoDB 資料表空間檔案已滿。
  4. Amazon RDS 資料庫執行個體的磁碟空間不足。
  5. 該資料表已達到檔案大小限制。

如需 Amazon RDS 支援之儲存引擎的詳細資訊,請參閱 Amazon RDS 支援的 MySQL 儲存引擎

解決方案

記憶體引擎資料表已達到其大小上限

透過執行類似下列內容的命令並檢查引擎值,確認記憶體引擎資料表已達到其大小上限:

mysql> show table status from database_name like 'table_name'\G

如果輸出中 data_length 變數的值大於 max_data_length 變數的值,則資料表已達到其大小上限。這是造成錯誤訊息的原因。

您可以在與資料庫執行個體相關聯的自訂參數群組中,以增加 max_heap_table_size 參數大小的方式解決此錯誤。如需詳細資訊,請參閱建立資料庫參數群組。請勿超過根據所使用資料執行個體類型的資料庫執行個體類別記憶體限制。如需可用於資料庫執行個體之記憶體的詳細資訊,請參閱 Amazon RDS 執行個體類型

MyISAM 引擎資料表已達到指標大小上限

透過執行類似下列內容的命令並檢查引擎值,確認 MyISAM 引擎資料表已達到指標大小上限:

mysql> show table status from database_name like 'table_name'\G

您可以使用 ALTER TABLE 命令以更改現有資料表的大小上限,藉此解決此錯誤:

mysql> ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

或者,您可以變更所有 MyISAM 資料表的預設大小限制。然後,將自訂資料庫參數群組中的 myisam_data_pointer_size 參數設為較高的值。

InnoDB 資料表空間檔案已滿

InnoDB 資料表的資料表空間大小上限為四十億頁 (16 TB)。

您可以針對大於 1 TB 的資料表,將資料表分割成多個資料表空間檔案。您可以使用 RANGELISTHASH 等不同類型的分區,以根據您的使用案例分割資料表。例如,您可以根據建立年份截斷舊資料,或者建立每年度的單獨分區。如需詳細資訊,請參閱 MySQL 檔案大小限制和 MySQL 文件中的分割

重要事項: 在生產環境中實作變更前,請徹底測試分割可能對應用程式造成的影響。

您可以透過使用類似下列內容的更改資料表陳述式,將現有資料表轉換為分區資料表:

ALTER TABLE table_name
PARTITION BY HASH(id)
PARTITIONS 8;

注意: 將現有資料表轉換為分區資料表時,不會復原 InnoDB 資料表空間的配置空間。若要復原 InnoDB 空間,請參閱如何解決比預期使用更多儲存的 Amazon RDS MySQL 資料庫執行個體問題?

Amazon RDS 資料庫執行個體的磁碟空間不足

如果 Amazon RDS 資料庫執行個體處於 STORAGE_FULL 狀態,您就會收到 HA_ERR_RECORD_FILE_FULL 錯誤。若要解決此錯誤,請將更多儲存空間新增至您的資料庫執行個體。如需詳細資訊,請參閱 Amazon RDS 資料庫執行個體的儲存不足

或者,您可以使用 Amazon CloudWatch FreeStorageSpace 指標,監控可用於資料庫執行個體的儲存空間。如需詳細資訊,請參閱監控 Amazon RDS 的概觀。您也可以訂閱儲存空間不足的 Amazon RDS 事件通知,以便在資料庫執行個體消耗超過 90% 的配置儲存時收到通知。如需詳細資訊,請參閱 Amazon RDS 事件類別和事件訊息

該資料表已達到檔案大小限制

注意: 部分現有的資料庫執行個體具有下限。例如,在 2014 年 4 月前建立之 MySQL 資料庫執行個體的檔案和資料表大小限制為 2 TB。此 2 TB 檔案大小限制同樣適用於從 2014 年 4 月前拍攝之資料庫快照建立的資料執行個體或讀取複本,無論建立資料庫執行個體的時間為何。

如果您有具有大小下限的資料庫執行個體,即可使用 mysqldump 取得資料的 MySQL 傾印。然後,將資料匯入到具有較高限制的新資料庫執行個體。


相關資訊

如何解決 Amazon RDS 資料庫執行個體儲存不足時發生的問題?