MySQL 8.0 リファレンスマニュアル


13.4.1.3 SET sql_log_bin ステートメント

SET sql_log_bin = {OFF|ON}

sql_log_bin 変数は、バイナリログへのロギングを現在のセッションで有効にするかどうかを制御します (バイナリログ自体が有効になっていると仮定します)。 デフォルト値は ON です。 現在のセッションのバイナリロギングを無効または有効にするには、セッション sql_log_bin 変数を OFF または ON に設定します。

レプリカにレプリケートしないソースに変更を加えている間にバイナリロギングを一時的に無効にするには、セッションに対してこの変数を OFF に設定します。

このシステム変数のセッション値の設定は制限された操作です。 セッションユーザーには、制限付きセッション変数を設定するのに十分な権限が必要です。 セクション5.1.9.1「システム変数権限」を参照してください。

トランザクションまたはサブクエリー内で sql_log_bin のセッション値を設定することはできません。

「この変数を OFF に設定すると、新しい GTID がバイナリログ内のトランザクションに割り当てられなくなります」。 これは、GTID をレプリケーションに使用している場合、バイナリロギングがあとで再度有効になった場合でも、この時点からログに書き込まれる GTID はその意味で発生したトランザクションを考慮しないため、それらのトランザクションは失われることを意味します。

mysqldump は GTID が使用されているサーバーからダンプファイルに SET @@SESSION.sql_log_bin=0 ステートメントを追加します。これにより、ダンプファイルのリロード中にバイナリロギングが無効になります。 このステートメントは、トランザクションの元の GTID が使用されるように、新しい GTID が生成されてダンプファイル内のトランザクションに割り当てられるのを防ぎます。


関連キーワード:  ステートメント, CREATE, TABLE, DROP, サブクエリー, トランザクション, 変数, FUNCTION, SLAVE, 関数