使用 Amazon RDS for MySQL 時,如何對「MySQL HA\_ERR\_RECORD\_FILE\_FULL」錯誤進行疑難排解?

2 分的閱讀內容
0

當我寫入 Amazon Relational Database Service (Amazon RDS) for MySQL 資料庫執行個體或讀取複本時,收到錯誤。我在 Amazon RDS for MySQL 資料庫執行個體上,收到以下資訊: 「錯誤1114 (HY000): 資料表 'table-name' 已滿。」 我在讀取複本上,在顯示從屬狀態 (Amazon RDS for MySQL 5.7) 或顯示複本狀態 (Amazon RDS for MySQL 8.0) 的 Last_Error 欄位中,收到以下訊息: 「Error_code: 1114;處理常式錯誤 HA_ERR_RECORD_FILE_FULL」

簡短描述

這些錯誤會發生在造成複寫失敗的讀取複本,或是寫入資料的資料表已滿時。下列問題也會導致此錯誤:

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

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

解決方法

MEMORY 引擎資料表已達到其大小上限

若要確認 MEMORY 引擎表是否已達到其大小上限,請執行類似以下範例的命令:

mysql> show table status from database_name like <YourTableName>\G

如果輸出中 data_length 的值大於 max_data_length 的值,則資料表已達到其大小上限。

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

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

若要確認 MyISAM 引擎資料表是否已達到其指標大小上限,請執行類似以下命令:

mysql> show table status from database_name like <YourTableName>\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 對資料表進行分區。例如,根據建立年份截斷舊資料,或者建立每年度的單獨分區。如需詳細資訊,請參閱 Amazon RDS 中的 MySQL 檔案大小限制和 MySQL 文件中的分割

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

若要將現有資料表轉換為分割資料表,請使用與下列範例類似的 ALTER TABLE 陳述式:

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

**注意事項:**將現有資料表轉換為分割資料表時,您不會若要復原 InnoDB 空間,請參閱分配給 InnoDB 資料表空間的空間。若要復原 InnoDB 空間,請參閱為什麼我的 Amazon RDS for MySQL 資料庫執行個體使用的儲存空間超出預期?

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

如果 Amazon RDS 資料庫執行個體處於 STORAGE_FULL 狀態,則您會收到「HA_ERR_RECORD_FILE_FULL」錯誤。若要解決此錯誤,請將更多儲存空間新增至您的資料庫執行個體

或者,您可以使用 Amazon CloudWatch FreeStorageSpace 指標,監控可用的儲存空間。您也可以訂閱低儲存空間 Amazon RDS 事件通知。當您的資料庫執行個體消耗的分配儲存空間超過 90% 時,它就會通知您。

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

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

如果您的資料庫執行個體的大小限制較低,請使用 mysqldump 對資料進行 MySQL 傾印。然後,將資料匯入到具有較高限制的新資料庫執行個體。

相關資訊

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