MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

17.2.1.3 バイナリロギングでの安全および安全でないステートメントの判断

MySQL レプリケーションでのステートメントの「安全性」とは、ステートメントベースの形式を使用してステートメントとその効果を正しくレプリケートできるかどうかを指します。 これがステートメントに当てはまる場合、ステートメントは安全と言い、そうでない場合は安全でないと言います。

一般的に、ステートメントが決定的である場合は安全であり、そうでない場合は安全ではありません。 ただし、特定の非決定的関数は「安全でない」と見なされません (このセクションの後半の安全でないと見なされない非決定的関数。を参照してください)。 また、浮動小数点数学関数 (ハードウェア依存) からの結果を使用するステートメントは、常に安全でないと見なされます (セクション17.5.1.12「レプリケーションと浮動小数点値」を参照してください)。

安全および安全でないステートメントの処理.  ステートメントは、ステートメントが安全と見なされるかどうかに応じて、およびバイナリロギング形式 (すなわち、binlog_format の現在の値) に基づいて異なる方法で処理されます。

安全でないとフラグされた各ステートメントは警告を生成します。 このようなステートメントがソースで多数実行された場合、エラーログファイルが過剰に大きくなる可能性があります。 これを防ぐために、MySQL には警告抑制メカニズムがあります。 50 秒間に 50 回を超える最新の ER_BINLOG_UNSAFE_STATEMENT 警告が 50 回生成されると、警告抑制が有効になります。 有効になっているときは、これによってこのような警告がエラーログに書き込まれることはありません。代わりに、このタイプの警告が 50 個生成されるたびに、「最後の警告が N 回、最近の S 秒間に繰り返されました」との注記がエラーログに書き込まれます。 50 個の最近のこのような警告が 50 秒以内に発行されるかぎり、これが継続します。頻度がこのしきい値を下回ると、再度通常どおりに警告ログが記録されます。 警告抑止は、ステートメントベースロギングでステートメントの安全がどのように判断されるか、および警告がクライアントにどのように送信されるかに影響しません。 MySQL クライアントは引き続きこのようなステートメントごとに 1 つの警告を受け取ります。

詳細については、セクション17.2.1「レプリケーション形式」を参照してください。

安全でないと見なされるステートメント.  次の特徴を持つステートメントは安全でないと見なされます。

追加情報については セクション17.5.1「レプリケーションの機能と問題」を参照してください。