Что такое binlog в mysql?
Я установил параметр mysql innodb_flush_log_at_trx_commit=0. Это означает, что mysql сбрасывает транзакции на жесткий диск 1 раз в секунду. Это правда, что если mysql потерпит неудачу с этим сбросом (из-за отключения питания), я потеряю свои данные из этих транзакций. Или mysql будет сохранять их в файле данных (ibdata1) после каждой транзакции независимо от сброса binlog?
Благодарю.
1 ответ
Двоичный журнал содержит "события", которые описывают изменения базы данных, такие как операции создания таблиц или изменения данных таблицы. Он также содержит события для операторов, которые потенциально могли вносить изменения (например, DELETE, который не соответствует ни одной строке), если не используется ведение журнала на основе строк. В двоичном журнале также содержится информация о том, как долго каждый оператор занимал эти обновленные данные. Двоичный журнал имеет две важные цели:
- Для репликации двоичный журнал на главном сервере репликации обеспечивает запись изменений данных, которые должны быть отправлены на подчиненные серверы. Главный сервер отправляет события, содержащиеся в его двоичном журнале, своим ведомым устройствам, которые выполняют эти события, чтобы сделать те же изменения данных, что и на главном сервере.
- Некоторые операции восстановления данных требуют использования двоичного журнала. После восстановления резервной копии события в двоичном журнале, которые были записаны после создания резервной копии, повторно выполняются. Эти события обновляют базы данных с момента резервного копирования.
Двоичный журнал не используется для таких операторов, как SELECT или SHOW, которые не изменяют данные. https://dev.mysql.com/doc/refman/8.0/en/binary-log.html
Вот запись в справочном руководстве MySQL для innodb_flush_log_at_trx_commit. Вы можете потерять последнюю секунду транзакции со значением, установленным на 0.
Обратите внимание, что binlog на самом деле является чем-то другим, независимым от innodb и используемым для всех механизмов хранения. Вот глава о двоичном журнале в справочном руководстве MySQL.