Отключить двоичное ведение журнала в MySQL / 8 для Windows - PullRequest
1 голос
/ 14 июля 2020

Я хочу отключить ведение двоичного журнала, чтобы диагностировать какую-то неинтересную проблему. В любом случае я никогда не использовал репликацию - она ​​включена только потому, что она используется по умолчанию в MySQL / 8. Google показывает около 20 различных способов сделать это, и ни один из них, похоже, не работает в моей настройке.

Официальное руководство говорит:

Чтобы отключить двоичное ведение журнала, вы можете указать параметр --skip-log-bin или --disable-log-bin при запуске.

Он работает как служба Windows, установленная с официальным приложением MySQL Installer, поэтому я использовал regedit (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MySQL80 \ ImagePath), но либо флаги в любом месте, либо автономные, либо с =1, предотвращают запуск службы, но файл журнала не содержит сообщений об ошибках.

I ' Вы также можете прочитать, что вы можете иметь это в файле по умолчанию:

[mysqld]
skip-log-bin

Сервер запускается, двоичное ведение журнала ошибок остается включенным.

Установка переменной среды MYSQLD_OPTS с --skip-log-bin=1 игнорируется (возможно, это эксклюзивно для некоторых Linux дистрибутивов).

Как отключить двоичное ведение журнала в MySQL / 8 на Windows?

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ MySQL80 \ ImagePath

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80

C: \ ProgramData \ MySQL \ MySQL Сервер 8.0 \ my.ini :

[client]
port=3306

[mysql]
no-beep

[mysqld]
port=3306
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
default_authentication_plugin=mysql_native_password
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
log-output=FILE
general-log=0
general_log_file="FOO.log"
slow-query-log=1
slow_query_log_file="FOO-slow.log"
long_query_time=10
# One of my failed attempts:
skip-log-bin

1 Ответ

1 голос
/ 15 июля 2020

Похоже, что проблема связана с порядком операций.

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

Параметры конфигурации

По умолчанию MySQL устанавливает значение конфигурации log-bin="FOO.bin", вам необходимо убедиться, что skip-log-bin объявлен НИЖЕ или ПОСЛЕ log-bin вариант конфигурации.

C: \ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini

[mysqld]

#...

log-bin="FOO.bin"
skip-log-bin

После сохранения файла конфигурации перезапустите MySQL service.

SELECT @@GLOBAL.log_bin, @@GLOBAL.version, @@GLOBAL.version_comment, @@GLOBAL.version_compile_os;

Результат

+------------------+------------------+------------------------------+-----------------------------+
| @@GLOBAL.log_bin | @@GLOBAL.version | @@GLOBAL.version_comment     | @@GLOBAL.version_compile_os |
+------------------+------------------+------------------------------+-----------------------------+
|                0 | 8.0.21           | MySQL Community Server - GPL | Win64                       |
+------------------+------------------+------------------------------+-----------------------------+
1 row in set (0.00 sec)

Тестирование с объявлением skip-log-bin до или выше log-bin, даже при использовании log-bin=0 или log-bin=OFF. в объявлении log-bin имеет приоритет - преобразование указанного значения log-bin в строку.
Удаление объявления log-bin и объявление skip-log-bin в любом месте привело к log_bin как OFF

Переменные среды

Переменная среды MYSQLD_OPTS определяется средами от c до systemd (Linux). [sic] [sic]

Похоже, не существует эквивалентной переменной среды для Windows. [sic] Что, я считаю, неприменимо при запуске MySQL как службы Windows.

...