MySQL, восстановить базу данных после ошибки загрузки mysqlbinlog? - PullRequest
1 голос
/ 31 мая 2019

Я копирую базу данных MySQL из исходного файла дампа и набор бинов, созданных после дампа.

Начальная загрузка из дампа в порядке.Затем при загрузке журналов с помощью mysqlbinlog происходит сбой одного из файлов, например, с ошибкой «сервер ушел».

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

Есть ли способ справиться с этим движением вперед?

Я могу минимизировать вероятность того, что во-первых будет ошибка, но это не похоже на процесс восстановления (или процесс master / slave), если какая-либо проблема MySQL во время загрузки полностью разрушает базу данных.Я чувствую, что, должно быть, что-то упустил.

1 Ответ

1 голос
/ 01 июня 2019

Я бы проверил значение конфигурации для max_allowed_packet.По умолчанию это довольно мало (4 МБ или 64 МБ в зависимости от версии MySQL).Возможно, вам придется увеличить его.

Обратите внимание, что вам нужно увеличить эту опцию как на сервере, так и на клиенте, который применяет binlogs.Эффективное ограничение на размер пакета составляет меньшее значения конфигурации сервера и клиента.

Даже если binlog успешно прошел репликацию, он может не сработать при воспроизведении binlogs, потому что вам нужно воспроизвестис mysql при указании опции --max-allowed-packet.

См. https://dev.mysql.com/doc/refman/8.0/en/gone-away.html для более подробного объяснения полученной ошибки.


Если вы не знаетеbinlog координаты последнего события binlog, которое прошло успешно, вам придется начать сначала: удалить частично восстановленный экземпляр и снова восстановить его из резервной копии, а затем применить binlog.

...