Как быстро восстановить репликацию MariaDB 10 после восстановления из резервной копии

Вопрос или проблема

Во-первых, моё понимание репликации MySQL довольно поверхностное.

У меня есть резервная копия, сделанная в мастере (с выключенной БД). Я восстановил эти файлы на сервере-реплике и исправил права на файлы, и MySQL запускается. База данных содержит все данные, и запросы работают.

Однако я не могу запустить репликацию. Я получаю ошибку относительно таблицы gtid_slave_pos. Однако это не имеет смысла для меня, так как режим gtid отключен.

Невозможно загрузить состояние репликации GTID для слейва из mysql.gtid_slave_pos: таблица 'mysql.gtid_slave_pos' не существует"

Также я получаю ошибки дубликатов первичного ключа, когда жду и снова выполняю команду show slave status.

Как вернуть репликацию?

П.С. Я не могу делать обычные логические резервные копии mysqldump – экспорт и импорт базы данных занимает больше недели.

Ответ или решение

Чтобы быстро восстановить репликацию MariaDB 10 после восстановления из резервной копии, выполните следующие шаги:

Шаг 1: Убедитесь, что репликация настроена правильно

  1. Проверьте конфигурацию:
    Убедитесь, что файл конфигурации my.cnf на слейве имеет правильные параметры для репликации:
    [mysqld]
    server-id=2
    log_bin=mysql-bin
    relay-log=mysql-relay-bin

    При этом server-id должен быть уникальным для каждого сервера в кластере.

Шаг 2: Восстановите данные

  1. Остановите MariaDB на слейве:
    Перед восстановлением данных убедитесь, что MariaDB на слейве остановлена.

  2. Восстановите файлы данных:
    Если вы уже восстановили данные и установили правильные разрешения на файлы, пропустите этот шаг. В противном случае сделайте это теперь.

  3. Запустите MariaDB на слейве:
    После восстановления, запустите сервер MariaDB.

Шаг 3: Настройка репликации

  1. Проверьте статус репликации:
    Используйте команду:
    show slave status\G;

    Это покажет текущее состояние слейва. Если вы видите ошибку, связанную с gtid_slave_pos, это может быть связано с отсутствием этой таблицы.

Шаг 4: Уст消 гтогособережениеще

  1. Создайте таблицу gtid_slave_pos:
    Если вы не используете GTID, вы можете просто игнорировать эту ошибку. Если таблица отсутствует и репликация не работает, выполните следующие действия:
    CREATE TABLE mysql.gtid_slave_pos (slave_uuid CHAR(36) NOT NULL, gtid VARCHAR(64), PRIMARY KEY(slave_uuid));

    На данный момент это будет иметь смысл, если вы хотите использовать GTID, иначе просто убедитесь, что он отключен.

Шаг 5: Поправьте проблемы с дублирующимися ключами

Если вы получаете ошибки дублирования первичных ключей:

  1. Остановите репликацию:
    Выполните:

    STOP SLAVE;
  2. Сбросьте репликацию:
    Убедитесь, что на слейве нет записей, которые могут вызывать конфликты. Вам, возможно, придется очистить некоторые записи, если они дублируются.

  3. Запустите репликацию снова:
    Если вы уверены в целостности данных, выполните:

    START SLAVE;

Шаг 6: Подключение к мастеру

  1. Настройте параметры для подключения к мастеру:
    Убедитесь, что вы указали правильный логин и пароль на мастере:

    CHANGE MASTER TO 
      MASTER_HOST='IP_МАСТЕРА',
      MASTER_USER='репликационный_пользователь',
      MASTER_PASSWORD='пароль',
      MASTER_LOG_FILE='имя_лога_мастера.000001',
      MASTER_LOG_POS=число;
  2. Проверьте, что все указано корректно.

Шаг 7: Запустите репликацию

  1. Запустите репликацию снова:

    START SLAVE;
  2. Проверьте статус:
    Выполните команду show slave status\G;, чтобы удостовериться, что репликация работает без ошибок.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...