クラウドインフラストラクチャー上のAdobe Commerceで MySQL のディスク領域が不足している

この記事では、クラウドインフラストラクチャ上で MySQL の容量が非常に少ない場合や、Adobe Commerce上に MySQL の容量がない場合のソリューションを提供します。 サイトの停止、買い物かごに製品を追加できない、データベースに接続できない、データベースにリモートでアクセスできない、ノードに SSH 接続できないなどの症状が発生する可能性があります。 また、Galera、環境の同期、PHP、データベース、および以下に示すデプロイメントエラーも症状に含まれます。 ソリューションをクリックして、ソリューションセクションに直接ジャンプします。

影響を受ける製品とバージョン

クラウドインフラストラクチャー上のAdobe Commerce 2.3.0-2.3.6-p1、2.4.0-2.4.2

問題

データベースが大きすぎます。 この症状には、データベース接続の切断、データベースのアップロードエラー、その他の様々な問題が含まれる場合があります。

発生する可能性のあるエラー:

ガレラ:

  • SQLSTATE[08S01]:通信リンク エラー:1047 WSREP はまだアプリケーションで使用するノードを準備していません 読み込みエラー:
  • SQLSTATE[HY000]:一般的なエラー:1180 エラー 5 「入力/出力エラー」が発生しました
  • SQLSTATE[08S01]:通信リンク エラー:1047 WSREP はまだアプリケーションで使用するノードを準備していません

環境同期エラー:

  • SQLSTATE:一般的なエラー:1180 COMMIT 中にエラー 5 「Input/output error」が発生する

PHP エラー:

  • php: PDO::__construct (): MySQL サーバが終了しました。
  • php エラー:PDO::__construct (): greeting パケットの読み込み中にエラーが発生しました。 PID=NNNN.
  • エラー 2013 (HY000): '初期通信パケットの読み取り'で MySQL サーバーへの接続が切断されました。システムエラー:0 "内部エラー/チェック (システムエラーではありません)"。

データベース エラー:

  • Error_code: 1114
  • InnoDB: FTS 補助インデックス テーブルにワード ノードを書き込み中にエラー(ディスク領域不足)が発生しました。
  • SQLSTATE[HY000]:一般エラー:2006 MySQL サーバーが停止しました
  • [ERROR] スレーブ SQL: クエリの'テーブル <table\_name> がいっぱいです' エラー
  • ユニット mysql.service が失敗状態になりました。
  • エラー:'ソケット「/var/run/mysqld/mysqld.sock」を使用してローカル MySQL サーバーに接続できません(111 "接続が拒否されました)'
  • 1205 ロック待機のタイムアウトを超えています。トランザクションを再度開始してください。クエリは次のとおりです:INSERT INTO &#39;cron_schedule&#39; (&#39;job_code&#39;, &#39;status&#39;, &#39;created_at&#39;, &#39;scheduled_at&#39;)値(?, ?, YYYY-02-07 HH:MM:SS, YYYY-MM-DD HH:MM:SS

展開エラー:

  • E: コマンド「['sudo', '-u', <environment name>, 'bash', '-c', '/etc/platform/<environment name>/post_deploy.sh']」がゼロ以外の終了ステータス 255 を返しました
  • E: コマンド '['ssh', u<node IP address>, 'sudo /usr/bin/sv -w 30 restart site-<environment name>g-nginx']'がゼロ以外を返しました
  • スキーマをアップグレードしています… SQLSTATE[HY000]:一般エラー:1114 テーブル <table\_name> がいっぱいです
  • SQLSTATE[HY000]:一般エラー:3 ファイルの書き込み中にエラーが発生しました。/<environment name>/#
  • *W: <filename> (エラーコード:28 「デバイスに空き領域がありません」)*インデックス作成エラー(/tmp の孤立した一時.ibd ファイルと共に):
  • カタログルールインデクサーで例外がスローされる。 一時テーブルは、その後にクリーンアップされず、現在の MySQL マスターノードのディスクに書き込まれます

再現手順 :

/data/mysql (または MySQL データストレージが設定されている場所)がいっぱいかどうかを確認する方法の 1 つは、CLI で次のコマンドを実行することです。

df -h

MySQL ディスクの空きメモリが 10% 未満であることが、停電の主な指標です。

原因:

inode が不足している、使用可能なストレージ領域が不足している、一時テーブルを生成する不適切なクエリなど、様々な問題が原因で、/data/mysql マウントがいっぱいになる可能性があります。

解決策

MySQL を元の状態に戻す(または停止するのを防ぐ)ための即時の手順があります。大きなテーブルをフラッシュして、領域を解放します。

しかし、長期的なソリューションとしては、より多くのスペースを割り当て、 注文/請求書/出荷アーカイブ機能の有効化など、 データベースのベストプラクティスに従うことになります。

以下は、迅速なソリューションと長期的なソリューションの両方の詳細です。

inode のチェックと解放

十分な数の使用可能な inode があることを確認します。 これを行うには、次のコマンドを実行します。

df -i

出力は次のようになります。

Filesystem Inodes   Used   Free Use% Mounted on
/dev/nvme2n1 655360    1695  653665    1% /data/mysql

使用 % が 70% 未満であることを確認します。 inode はファイルと相関関係があります。 パーティションからファイルを削除すると、inode が解放されます。

ストレージスペースの確認と解放

使用可能なストレージスペースを確認します。 そのためには、次を実行します。

df -k

出力は次のようになります。

Size Used Avail Use% Mounted on·
       50G 49G 95M 100% /data/mysql

使用率 % が 70% を超える場合は、領域を解放または追加するために対処する必要があります。

サイズの大きい ibtmp1 ファイルの確認

各ノードの /data/mysql にある大きな ibtmp1 ファイルを確認します。このファイルは、一時テーブルのテーブル領域です。 一時テーブルを生成する不正なクエリがある場合、それらは ibtmp1 ファイルに含まれます。 このファイルは、データベースが再起動されたときにのみ削除されます。 使用可能なすべての領域を占有している場合は、データベースを再起動する必要があります。 無効なクエリがある場合は、再度作成されます。

大きいテーブルのフラッシュ

WARNING
操作を実行する前にデータベースバックアップを作成し、サイトの負荷が高い期間は避けることを強くお勧めします。 開発者向けドキュメントの データベースのダンプを参照してください。

大きなテーブルがあるかどうかを確認し、フラッシュできるテーブルがあるかどうかを検討します。 これをプライマリ(ソース)ノードで行います。

例えば、レポートを含むテーブルは通常フラッシュできます。 大きいテーブルの検索方法について詳しくは、 大きい MySQL テーブルの検索を参照してください。

巨大なレポートテーブルがない場合は、Adobe Commerce アプリケーションを元の状態に戻すた _index に、レポートテーブルのフラッシュを検討します。 index_price のテーブルが最適な候補となります。 例えば、catalog_category_product_index_storeX テーブルの場合、X には「1」から最大ストア数までの値を含めることができます。 これらのテーブルのデータを復元するには、インデックスを再作成する必要があることに注意してください。大きなカタログの場合、インデックスの再作成に多くの時間がかかることがあります。

フラッシュしたら、wsrep 同期が完了するまで待ちます。 これで、バックアップを作成し、容量の割り当てや購入、 注文/請求書/出荷アーカイブ機能の有効化など、容量を追加するためにより重要な手順を実行できます。

バイナリログ設定を確認

MySQL サーバーのバイナリログ設定(log_bin および log_bin_index)を確認します。 設定を有効にすると、ログファイルが大きくなる場合があります。 サポートチケットを作成大きなバイナリログファイルのパージをリクエストします。 また、ログが定期的にパージされ、スペースを取りすぎないように、バイナリログが正しく設定されていることを確認するようにリクエストします。

MySQL サーバー設定にアクセスできない場合は、サポートに連絡して確認してください。

スペースの割り当てと購入

未使用のディスク領域がある場合は、MySQL 用に割り当てるディスク領域を増やします。 空きディスク容量があるかどうかを確認する方法については、 ディスク容量制限の確認の記事を参照してください。

  • スタータープラン、すべての環境、Pro プラン統合環境では、未使用のディスク領域がある場合に割り当てることができます。 詳しくは、MySQL 用の領域の割り当てを参照してください。
  • Pro プランのステージング環境および実稼動環境では、未使用のディスク容量がある場合に割り当てるディスク容量を増やすには、 サポートにお問い合わせください。

ディスク容量の上限に達してもディスク容量の不足が発生する場合は、ディスク容量の購入を検討してください。詳しくは、Adobeアカウントチームにお問い合わせください。

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a