Отключить бинарное ведение журнала MySQL с помощью переменной log_bin

35

Конфигурационный файл MySQL по умолчанию /etc/mysql/my.cnf, установленный некоторым пакетом debian с использованием APT, часто устанавливает переменную log_bin, поэтому binlog включены:

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

Когда я хочу отключить бинарное ведение журнала при такой установке, закомментируйте строку в my.cnf, конечно, но мне интересно, есть ли способ отключить бинарное ведение журнала, установив явно log_bin в OFF, в стиле debian, я имею в виду включенный файл, такой как /etc/mysql/conf.d/myCustomFile.cnf, поэтому по умолчанию my.cnf не изменяется и может быть легко обновлен apt при необходимости.

Я пытался "log_bin = 0", "log_bin = OFF" или "log_bin =", но ни один не работает ...

Николас Пайарт
источник

Ответы:

42

Это старый вопрос, но он возник в процессе поиска, когда я пытался пробудить в памяти правильное имя опции, и теперь, когда я понял это, я добавляю подробности здесь.

Ключевая часть вопроса:

Я имею в виду во включенном файле, как /etc/mysql/conf.d/myCustomFile.cnf

Вы можете сделать это из включенного файла опций, используя опцию 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.

Журналы имеют историю не слишком интуитивно понятного, и меняют свой формат от версии к версии (я смотрю на вас, медленный журнал).

jynus
источник
Это не работает на MariaDB
MechanTOurS
Учитывая, что я использую MariaDB, и у меня точно такая же строка в моем конфиге, я очень уверен, что это работает.
января
4

Если вы не выполняете репликацию, вы можете отключить ведение блогов, изменив файл my.ini или my.cnf. Откройте 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
Я думаю, что ОП понимает это, поэтому он написал: «Я имею в виду во включенном файле, например /etc/mysql/conf.d/myCustomFile.cnf, поэтому по умолчанию my.cnf не изменяется»
Питер В. Мёрч
1

Из Руководства для MariaDB ( https://mariadb.com/kb/en/library/activating-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 есть опция явного отключения двоичной регистрации в файле конфигурации с помощью параметров --skip-log-binили --disable-log-binв разделе [mysqld] файла конфигурации.

Чтобы отключить двоичное ведение журнала, вы можете указать опцию --skip-log-binили --disable-log-binпри запуске. Если какой-либо из этих параметров указан, а --log-binтакже указан, параметр, указанный позже, имеет приоритет. Когда двоичное ведение журнала отключено, системная переменная log_bin установлена ​​в OFF.

jonnyjandles
источник
0

Как я знаю после обновления пакета, файл конфигурации должен быть старым, поэтому после обновления у вас будут те же файлы конфигурации. В противном случае вы можете создать второй файл конфигурации по пути $ MYSQL_HOME / my.cnf. Этот предназначен для специфичных для сервера опций и, как я знаю, перезапишет настройки в глобальном /etc/my.cnf

Тамас Сзас
источник
1
Да, стандартная политика Debian не переписывает файл конфигурации в / etc. Но мой вопрос был именно о том, как перезаписать параметр log_bin "нулевым значением" БЕЗ комментирования строки в /etc/mysql/my.cnf.
Николас Пайарт
skip-log-bin отключает
булевы