Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Рассмотрим восстановление репликации, с помощью утилиты Percona Xtrabackup.
Данный метод не требует остановки MASTER-сервера, единственное условие, чтобы была включена запись бинарных логов.

1) Установим утилиту Xtrabackup:

для этого скачаем deb пакет percona-release для установки репозитория Percona

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

установим deb пакет , который пропишет репозиторий Percona

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

затем обновим данные о доступных пакетах

sudo apt update

и установим саму утилиту

sudo apt install percona-xtrabackup-24

2) Подготовим данные для копирования, скопируем файлы БД:

Для этого: очистим и создадим директорию куда будем копировать данные

rm -r mysql 2> /dev/null; mkdir mysql

запустим копирование

sudo innobackupex --user=root --password=root ~/mysql/

В нашем созданном каталоге, появится каталог с текущей датой.

3) После создания резервной копии данные не готовы к восстановлению, в логах, которые нужно восстановить, могут быть отмененные транзакции:
Нужно применить лог изменений на файл данных

sudo innobackupex --user=root --password=root --apply-log ~/mysql/*/

Резервная копия готова, далее нужно скопировать файлы данных на SLAVE-сервер любым удобным способом

4) На slave-сервере: скопируем данные в каталог mysql, предварительно остановив mariadb:

sudo service mariadb stop
sudo mv /var/lib/mysql /var/lib/mysql.old
sudo cp -r ~/mysql/*/ /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo service mariadb start

Заходим в СУБД mariadb

sudo mysql -uroot -proot

Останавливаем репликацию, корректируем MASTER_LOG_FILE и MASTER_LOG_POS, запускаем репликацию

MariaDB [(none)]>  STOP SLAVE;
MariaDB [(none)]>  CHANGE MASTER TO MASTER_HOST='<ip_server1>', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_USE_GTID=slave_pos;
MariaDB [(none)]>  START SLAVE;

Далее выводим актуальную информацию о состоянии базы данного сервера

MariaDB [(none)]> show master status\G
*************************** 1. row ***************************
            File: mysql-bin.000007
        Position: 20315691
    Binlog_Do_DB: eltex_alert,eltex_ems,wireless,radius,eltex_auth_service,ELTEX_PORTAL,eltex_doors,eltex_ngw,eltex_pcrf,eltex_ott,eltex_jobs,eltex_jerry,eltex_bruce,eltex_wifi_customer_cab,eltex_sorm2,eltex_ont,eltex_wids
Binlog_Ignore_DB: mysql,Syslog,performance_schema,information_schema
1 row in set (0.000 sec)

Затем останавливаем репликацию, корректируем MASTER_LOG_FILE и MASTER_LOG_POS, запускаем репликацию на первом сервере. Взяв данные из актуальной информации о состоянии базы восстанавливаемого сервера

sudo mysql -uroot -proot
MariaDB [(none)]>  STOP SLAVE;
MariaDB [(none)]>  CHANGE MASTER TO MASTER_HOST='<ip_server2>', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_USE_GTID=slave_pos;
MariaDB [(none)]>  START SLAVE;

На обоих серверах проверяем, что репликация работает:

MariaDB [(none)]> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: <ip_server1>
                  Master_User: replication
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.002455
          Read_Master_Log_Pos: 89717415
               Relay_Log_File: mysqld-relay-bin.000004
                Relay_Log_Pos: 89717561
        Relay_Master_Log_File: mysql-bin.002455
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table:
  • Нет меток