Подтвердить что ты не робот

Как запустить запрос в MYSQL, не записывая его в двоичный журнал

Я хочу запустить импорт большого файла в MySQL. Однако я не хочу, чтобы он записывался в двоичный журнал, потому что импорт займет много времени и приведет к тому, что ведомые устройства будут сильно отставать. Я предпочел бы запустить его отдельно от рабов, после того, как он будет намного проще в системе. Эта таблица является новой, и поэтому мне не нужно беспокоиться о ее выходе из синхронизации, поскольку в конце концов мастер и все подчиненные будут иметь одни и те же данные, потому что все они будут импортировать один и тот же файл в итоге. Я также не хочу изменять какие-либо опции replicate-ignore- * или binlog_ignore- *, потому что они требуют перезапуска соответствующих серверов. Есть ли способ запуска одного запроса без записи его в двоичный журнал?

Я уже знаю ответ, но я не мог найти его очень легко в сети, поэтому я разрешаю кому-то опубликовать ответ, чтобы получить некоторые реплики. Если ответов нет в маленьком белом, я отправлю ответ, который я нашел.

4b9b3361

Ответ 1

Вы можете использовать переменную сеанса sql-log-bin, чтобы отключить ведение журнала для текущего сеанса. Просто введите:

SET sql_log_bin = 0;

и все запросы в текущем сеансе не будут отправляться в двоичный журнал. Если вы хотите включить двоичный вход в систему, запустите:

SET sql_log_bin = 1;

Это только для текущего сеанса, в котором вы находитесь. Все остальные запросы из всех других подключений будут по-прежнему регистрироваться. Кроме того, у вас должны быть привилегии SUPER для этого.

Ответ 2

Если вы хотите сделать это из cli, попробуйте это, это сработало для меня:

$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB

Возможно, что параметр "init-command" был добавлен в более новую версию MySQL.