log_bin変数を使用してMySQLバイナリロギングを無効にする


35

デフォルトのMySQL構成ファイル/etc/mysql/my.cnfは、APTを使用してdebianパッケージによってインストールされることが多く、log_bin変数を設定するため、binlogが有効になります。

log_bin = /var/log/mysql/mysql-bin.log

そのようなインストールでバイナリログを無効にしたい場合、my.cnfの行をコメントアウトしますが、debianスタイルで明示的にlog_binをOFFに設定してバイナリログを無効にする方法があるのでしょうか? /etc/mysql/conf.d/myCustomFile.cnfのようなインクルードファイル。デフォルトのmy.cnfは変更されず、必要に応じてaptで簡単に更新できます。

「log_bin = 0」、「log_bin = OFF」または「log_bin = "を試しましたが、どれも機能しません...

回答:


42

これは古い質問ですが、正しいオプション名を思い出してみたときに検索で出てきたので、ここで詳細を追加することにしました。

質問の重要な部分は次のとおりです。

/etc/mysql/conf.d/myCustomFile.cnfのようなインクルードファイルを意味します

optionを使用して、含まれているオプションファイルからこれを行うことができますskip-log-bin。たとえば/etc/mysql/conf.d/disable_binary_log.cnf、次の内容で作成できます。

[mysqld]
skip-log-bin

skip-他のオプションにプレフィックスとして追加して、この方法でも無効にすることができます。


1
素晴らしい、まさに私が期待していたもの。これは少なくともMariaDB 10.0でうまく機能します。どうもありがとう。
ニコラスペイアート

7

MySQL 8では、オプションdisable_log_binがセクション内のmy.cnfファイルにパラメーターなしで提供される必要があります[mysqld]

[mysqld]
disable_log_bin
some-other-option = any-value

5

次のように表示されます。log_binはパラメーターを受け入れないはずです。

log_bin

ブール値のパラメーターであるため、まったく何もありません。

ただし、値が設定されている場合、ログは有効になり、値はbinlog basenameとして解釈されます。

ログオプションには、直観的すぎず、形式をバージョン間で変更するという履歴があります(ログを見ていると、ログが遅くなります)。


MariaDBでは機能しません
MechanTOurS

MariaDBを使用しており、設定にまったく同じ行があることを考えると、機能すると確信しています。
-jynus

4

レプリケートしていない場合は、my.iniまたはmy.cnfファイルを変更することにより、binloggingを無効にできます。my.iniまたは/etc/my.cnf(/etc/mysql/my.cnf)を開き、次を入力します。

# vi /etc/my.cnf

「log_bin」という行を見つけて、次のように削除またはコメント化します。

#log_bin = /var/log/mysql/mysql-bin.log

また、次の行を削除またはコメントする必要があります。

#expire_logs_days = 10

#max_binlog_size = 100M

ファイルを閉じて保存します。最後に、mysqlサーバーを再起動します。

# service mysql restart


1
OPはこれを理解していると思うので、「/ etc / mysql / conf.d / myCustomFile.cnfのようなインクルードファイルを意味するので、デフォルトのmy.cnfは変更されません」
Peter V.MørchJan

1

MariaDB のマニュアルから(https://mariadb.com/kb/en/library/activation-the-binary-log/

名前を指定しない場合(オプションで絶対パスを含めることができます)、デフォルトはdatadir / log-basename-bin、datadir / mysql-binまたはdatadir / mariadb-binになります

しかしながら、

SUPER特権を持つクライアントは、sql_log_bin変数を設定することにより、現在のセッションのバイナリログを無効化および再有効化できます。

SET sql_log_bin = 0;

SET sql_log_bin = 1;

ただし、インストール時にデフォルトで有効になったと言う場合は、my.cnfファイルから行を削除して無効にし、mysqldを再起動する必要があります。バイナリデータを削除することもできます(https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html

PURGE BINARY LOGS

最後に、他の投稿者の回答が言及しているように、MySQL 8には、構成ファイルの[mysqld]セクションの--skip-log-binor --disable-log-binオプションを使用して、構成ファイルからのバイナリロギングを明示的にオフにするオプションがあります。

バイナリロギングを無効にするには、起動時に--skip-log-binまたは --disable-log-binオプションを指定できます。これらのオプションのいずれかが指定--log-binされ、指定されている場合、後で指定されたオプションが優先されます。バイナリログが無効になっている場合、log_binシステム変数はOFFに設定されます。


0

パッケージを更新した後に知っているように、構成ファイルは古いものである必要があるため、更新後も同じ構成ファイルがあります。それ以外の場合は、パス$ MYSQL_HOME / my.cnfに2番目の構成ファイルを作成できます。これはサーバー固有のオプション用で、私が知っているようにグローバル/etc/my.cnfの設定を上書きします


1
はい、Debianのデフォルトポリシーは/ etcの設定ファイルを上書きしません。しかし、私の質問は、/ etc / mysql / my.cnfの行にコメントを付けずに、「null値」でlog_bin設定を上書きする方法でした。
ニコラスパヤール14

skip-log-binは、他の場所で設定されたブール値をオフにします
サンティアゴアリズティ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.