Записки программиста
  • Главная страница
  • Базы данных
    • ClickHouse
      • Экспорт и импорт данных
    • MariaDB
      • Настройка временной зоны
    • MongoDB
      • Пользователи и авторизация
      • Конфигурация кэша WiredTiger
    • MySQL
      • Установка в FreeBSD
      • Восстановление репликации
      • Полезные ссылки
    • PostgreSQL
      • Блокировки
      • Вакуумирование таблиц
      • Репликация
      • Полезные заметки
    • Redis
      • Полезные заметки
  • Безопасность
    • OpenSSL
      • Работа с контейнером p12
    • PostgreSQL
  • Инфраструктура
    • Docker
      • Полезные заметки
    • Kubernetes
      • Установка k3s
      • Полезные заметки
    • Proxmox VE
      • Управление узлами кластера
  • Операционные системы
    • FreeBSD
      • Установка XOrg и Gnome
      • Свой репозиторий pkgng
      • Поддержка ZFS
      • Использование CARP
      • Установка на ZFS без таблицы разделов
    • Linux
      • apt
      • dpkg
      • Изменение корневого раздела диска без перезагрузки
    • macOS
      • Настройка уведомлений macOS
      • Настройка Finder
      • Настройка shell пользователя
      • Служба Spotlight
      • Локализация каталогов
      • Маршрутизация и VPN
    • UNIX
      • Работа с архивами
  • Программирование
    • PHP
      • Полезные заметки
    • Shell
      • Bash
  • Сетевые технологии
    • Nebula
    • Полезные ссылки
  • Системы версирования
    • GIT
      • Основные операции
      • Синхронизация форка с основным проектом
    • SVN
      • Полезные заметки
  • Файловые системы
    • Ceph
      • Настройка модуля Dashboard
      • Мониторинг
      • Полезные заметки
    • ZFS
      • Управление пулами ZFS
      • Управление томами ZFS
  • Транспорт
    • Никополь - Каменка-Днепровская
    • Энергодар - Примерное - Новоукраинка - Ивановка - Благовещенка - Червонцы
Powered by GitBook
On this page
  • Определение проблемы
  • Восстановление
  • Ссылки

Was this helpful?

  1. Базы данных
  2. MySQL

Восстановление репликации

Репликация в MySQL - очень удобная возможность, а с появлением GTID эксплуатация стала еще проще. Репликация позволяет держать горячую резервную копию и снижать нагрузку на основной сервер, направляя выборки на реплику. И все работает отлично, пока однажды не случается проблема...

Определение проблемы

Если при воспроизведении бинарных журналов на реплике возникает какая-либо проблема, то репликация останавливается. При этом в журнале вы увидите подобное:

2021-01-01T18:56:50.487205Z 11964570 [Warning] Slave: Can't find record in 'mytable' Error_code: 1032,

2021-01-01T18:56:50.487173Z 11964570 [ERROR] Slave SQL for channel 'master': Could not execute Delete_rows event on table mydb.mytable; Can't find record in 'mytable', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.002599, end_log_pos 866963173, Error_code: 1032

2021-01-01T18:56:50.487213Z 11964570 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.002599' position 866962354

Произойти подобная ситуация может например при изменении данных на реплике напрямую.

Восстановление

Самый простой способ восстановления работоспособности реплики - полное восстановление из резервной копии. Но это не всегда целесообразно по многим причинам - например, значительный объем данных и время, необходимое для восстановления.

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

Для определения инструкций, которые не могут быть выполнены, на основном сервере смотрим события в журнале:

mysqlbinlog -v --start-position=866962354 --stop-position=866962454 \
  mysql-bin.002599

Значение параметра --start-position берем из сообщений в журнале реплики, а значение --stop-position определяем опытным путем.

После изучения событий и корректировки данных на реплике, запускаем репликацию:

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;

Ссылки

PreviousУстановка в FreeBSDNextПолезные ссылки

Last updated 4 years ago

Was this helpful?

https://dev.mysql.com/doc/refman/5.7/en/show-binlog-events.html
https://serverfault.com/questions/862351/slave-replication-stops-with-last-sql-errno-1032