データベースの復元エラーの解決:エラー 1105 (HY000) - Adobe Commerce Cloudの書き込みセットの最大サイズを超えています
Galera クラスタ上で MariaDB バックアップをリストアする際、トランザクション・サイズの制限が 2 GB であるため、Maximum Writeset Size Exceeded というエラーが発生する場合があります。 この記事では、バックアップとリストアのコマンドを調整して大きなトランザクションを処理し、リストア・プロセスを確実に成功させるためのステップ・バイ・ステップのソリューションを提供します。
説明
環境
Adobe Commerce Cloud
この問題は、MariaDB Galera クラスタ環境で発生します。
問題/症状
Galera クラスタで MariaDB データベースのバックアップをリストアしようとすると、次のエラーが発生してプロセスが失敗する場合があります。
エラー 1105 (HY000) (行 [
特定の行番号) ]
:書き込みセットの最大サイズを超えています
原因
Galera クラスタの wsrep_max_ws_size
システム変数は、最大の書き込みセット・サイズを 2 GB に設定します。 バックアップに、このサイズを超える大きなローまたはバイナリ・データが含まれる場合、リストア・プロセスは失敗します。
解決策
この問題を修正するには、--max_allowed_packet
ータサイズを大きくして大きなトランザクションを防ぐためにバックアッププロセスを調整します。 これにより、MySQL サーバーは、バックアップと復元の両方の操作中に、より大きな行またはバイナリデータを処理できます。 必ず実稼動以外の環境でテストしてください。
-
MySQL エラーログからエラーの正確な原因を特定します。 次のようなメッセージを探します。
エラー 1105 (HY000) (行
[
特定の行番号)]
:書き込みセットの最大サイズを超えていますこれにより、トランザクション・サイズが Galera の制限を超えていることが原因でエラーが発生していることが確認されます。
-
--max_allowed_packet
パラメーターを指定して新しいバックアップを作成し、より大きなデータサイズを許可し、トランザクションのサイズ超過を防ぎます。The --max_allowed_packet
のパラメーターは、クライアントとの通信中にサーバーが処理できるデータパケットの最大サイズを定義します。 このサイズを大きくすると、大きい行やオブジェクトを処理できるので、トランザクションの分割やサイズ超過の書き込みセットを防ぐことができます。 ほとんどのシナリオでは、--max_allowed_packet=64M
で十分です。 データベースに非常に大きなローまたはバイナリ・データが含まれる場合は、この値を – max_allowed_packet=128M に調整します。 また、圧縮(gzip など)を使用して、ファイルサイズを小さくします。
バックアップ コマンドの例: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>
-
バックアップを復元したら、プロセスがエラーなしで完了することを確認します。 ログを確認して、警告や異常値がないことを確認します。
関連資料
wsrep_max_ws_size MariaDB ドキュメントの Galera クラスタ・システム変数の中にあります。