解決資料庫還原失敗:錯誤1105 (HY000) — 超過Adobe Commerce Cloud上的寫入集大小上限
在Galera叢集上還原MariaDB備份時,由於2GB交易大小限制,您可能會發生 Maximum Writeset Size Exceeded 錯誤。 本文提供逐步解決方案,調整備份與還原命令,以處理較大型的交易,確保還原程式順利完成。
說明 description
環境
Adobe Commerce Cloud
這個問題會在MariaDB Galera叢集環境中發生。
問題/症狀
當您嘗試在Galera叢集上還原MariaDB資料庫備份時,程式可能會失敗,並出現下列錯誤:
第[行發生錯誤1105 (HY000),特定行號]:超過寫入集大小上限
原因
Galera叢集的wsrep_max_ws_size系統變數將寫入集大小上限設為2GB。 如果備份包含超過此大小的大型資料列或二進位資料,還原程式就會失敗。
解決方法 resolution
若要修正此問題,請調整備份程式,以增加--max_allowed_packet大小來避免大型交易。 這可讓MySQL伺服器在備份和還原作業期間處理較大的資料列或二進位資料。 請記得一律在非生產環境中測試。
-
從MySQL錯誤記錄檔識別錯誤的確切原因。 尋找類似以下的訊息:
第
[行發生錯誤1105 (HY000),特定行號]:超過寫入集大小上限這可以確認錯誤是由於交易大小超過Galera的限制。
-
建立指定
--max_allowed_packet引數的新備份,以允許更大的資料大小並防止超大交易。The --max_allowed_packet引數會定義伺服器在與使用者端通訊期間可以處理的資料封包大小上限。 增加此大小有助於處理較大的列或物件,以防止異動分割和過大的寫入集。 在大多數案例中,--max_allowed_packet=64M就足夠了。 如果您的資料庫包含非常大的資料列或二進位資料,請將此值調整為 — max_allowed_packet=128M。 此外,使用壓縮(例如gzip)來縮減檔案大小。
備份命令範例:code language-none mysqldump -h <host> -u <username> -p <password> --single-transaction --max_allowed_packet=64M <db_name> | gzip > /tmp/<dump_name>.sql.gz -
還原備份時,請指定增加的
--max_allowed_packet值,以確保與修改的備份相容。
還原命令範例:zcat /tmp/<dump_name>.sql.gz | sed -e 's/DEFINER[ ] *=[ ] *[ *] *\*/\*/' | mysql --host=127.0.0.1 -u <username> -p <password> -
還原備份之後,請確認處理程式完成且沒有錯誤。 檢查記錄以確保沒有警告或異常存在。