Модуль журнала Mysql особенно важен: и отказоустойчивый, и главный-подчиненный в будние дни полагаются на наш модуль журнала.
Журналы MySQL innoDB
Mysql innoDB имеет два модуля ведения журнала:редолог и бинлог
Давайте сначала взглянем на redolog.
Redolog — это журнал повторов на китайском языке., Для чего это? Если каждый раз, когда ваше обновление или вставка записываются на диск, стоимость ввода-вывода относительно велика, поэтому InnoDB сначала записывает запись в журнал повторов и одновременно обновляет ее в памяти, тем самым завершая обновление или вставку!
иRedolog пишется циклически, то есть имеет фиксированный размер, когда он почти заполнится, mysql обновит некоторые записи на диске, а затем очистит обновленные журналы повторов, чтобы освободить место для последующих записей.
binlog - это журнал архива, для чего это используется? Как следует из названия, его основная функция — архивирование (и ведущее-ведомое)! Есть три режима:
оператор: запишите все операторы, кроме запроса.
строка: запишите измененную форму каждой строки записей, то есть какая строка была изменена и что было изменено!Например, если вы обновите 100 записей, он запишет, что было изменено в этих 100 записях (версия 5.1 .5 только есть)
смешанный: это смесь оператора и строки, и mysql определяет, в какой форме записывать этот оператор! (доступно только в версии 5.1.8)
Бинлог не имеет фиксированного размера, и каждая дополнительная запись не перезапишет предыдущую.
Еще один момент, redolog доступен только в InnoDB, он существует на уровне движка, а binlog существует на уровне сервера. Так что, если вы используете механизм хранения MyISAM, у вас нет повторного журнала!
двухкомпонентный коммит
Далее поговорим о двухэтапной подаче.
Двухэтапная фиксация означает, что мы сначала записываем это обновление в redolog и устанавливаем redolog в состояние подготовки, затем записываем в binlog, фиксируем транзакцию после записи в binlog и устанавливаем redolog в состояние фиксации. То есть разбить релог на две части, подготовить и зафиксировать!
Зачем это делать?
На самом деле redolog был добавлен позже, а binlog был раньше. Сначала в механизме хранения был только MyISAM, затем InnoDB, а затем в MyISAM не было ни транзакций, ни отказоустойчивости. Итак, InnoDB сделал повторный журнал. потомЧтобы обеспечить синхронизацию двух журналов, существует двухэтапная фиксация..
Вы предполагаете, что если сначала сохранить redolog, а затем записать binlog. Если редолог пишется, то зависает. ок у тебя вроде все ок, но твой бинлог не записался, так что эта запись меньше! Если вы создадите резервную копию этого бинлога, ваша запись исчезнет навсегда!
Что, если я сначала напишу binlog, а потом redolog? После записи бинлога ваша база данных не работает.Редолога нет?Это значит, что вы раньше не обновлялись успешно. Но бинлог записался, и на своей стороне все равно успешно, так что бэкап бинлога не тот!
Подводя итог: коммит из двух частей!
Пожалуйста, поправьте меня, если есть ошибки!
Личный публичный аккаунт: стратегия прокачки да