Вимкнути бінарний журнал MySQL зі змінною log_bin


35

Конфігураційний файл MySQL /etc/mysql/my.cnf, встановлений деяким пакетом debian, використовуючи APT, часто встановлює змінну log_bin, тому бінлог увімкнено:

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 принаймні. Дуже дякую.
Nicolas Payart

7

У MySQL 8 це параметр enable_log_bin, який повинен бути наданий без жодних параметрів у my.cnfфайлі [mysqld]розділу.

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

5

Ви можете бачити це таким чином, що log_bin не повинен приймати параметри:

log_bin

або взагалі нічого, оскільки це булевий параметр.

Однак якщо встановлено значення, журнали увімкнено, а значення інтерпретується як базове ім'я бінолога.

Параметри журналу мають історію не надто інтуїтивного характеру і змінюють його формат від версії до версії (дивлюся на вас, повільний журнал).


Він не працює на MariaDB
MechanTOurS

З огляду на те, що я використовую MariaDB, і у мене є такий самий рядок на моєму конфігурації, я впевнений, що він працює.
jynus

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/uk/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 встановлюється на ВИМКНЕНО.


0

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


1
Так, політика за замовчуванням Debian не замінює конфігураційний файл у / etc. Але моє питання полягало саме в тому, як замінити налаштування log_bin на "нульове значення" БЕЗ коментування рядка в /etc/mysql/my.cnf.
Nicolas Payart

skip-log-bin вимикає булеви, встановлені в іншому місці
santiago arizti
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.