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

Описание

В данной инструкции рассмотрен перенос БД между серверами Master/Slave "быстрым способом" при помощи инструмента Marabackup для восстановления репликации.

Перенос БД выполняется в несколько основных шагов: 

    1) На оба сервера устанавливаются необходимые пакеты, а также создаются необходимые для импорта/экспорта БД директории, с необходимыми правами доступа.

    2) Выполняется импорт базы на сервере Master, затем ее перенос на сервер Slave.

    3) На сервере Slave останавливается сервис Mariadb, а также удаляются локальные файлы БД.

    4) Затем на сервере Slave выполняется подготовка и развертывание импортированной БД.

Последовательность выполнения:

1. Выполняем установку пакета mariadb-backup на обоих серверах

sudo apt update
sudo apt install mariadb-backup

2. Создаем папку для экспорта бэкапа на сервере Master

mkdir -p /tmp/mysql/backup

3. Создаем папку для импорта бэкапа на сервере Slave

sudo mkdir -p /tmp/mysql/backup
sudo chmod -R 777 /tmp/mysql/

4. Выполняем экспорт БД на сервере Master

sudo mariabackup --backup \
   --target-dir=/tmp/mysql/backup/ \
   --user=root --password=root

5. Выполняем перенос экспортированной БД с сервера Master на сервер Slave. Для этого воспользуемся утилитой scp, команда: sudo scp -r /tmp/mysql/backup/* <ssh_огин_сервера_Slave>@<IP_адрес_сервера_Slave>:/tmp/mysql/backup/

Пример:

sudo scp -r /tmp/mysql/backup/* tester@192.168.0.38:/tmp/mysql/backup/

6. На сервере Slave останавливаем MariaDB и удаляем все из директории /var/lib/mysql/

sudo service mariadb stop
sudo rm -r /var/lib/mysql/*

7. Выполняем подготовку БД к импорту на сервере Slave

sudo mariabackup --prepare \
   --target-dir=/tmp/mysql/backup/

8. Выполняем импорт БД на сервере Slave

sudo mariabackup --copy-back \
   --target-dir=/tmp/mysql/backup/

9. Задаем в импортированной БД необходимые права на сервере Slave и перезапускаем сервис

sudo chown -R mysql:mysql /var/lib/mysql/
sudo service mariadb restart

10. Проверяем состояние MariaDB командой

sudo service mariadb status

*В случае если сервис MariaDB в статусе failed, убедитесь, что вы выполнили шаг 7, и проверьте, что заданы верные права как в шаге 10.

11. На сервере Slave установите gtid_slave_pos на координаты GTID , которые мы извлекли из файла xtrabackup_binlog_info или файла xtrabackup_slave_info в каталоге резервного копирования. Например:

cat xtrabackup_binlog_info
mariadb-bin.000096 568 0-1-2

12. Для настройки запуска репликации выполните следую команду на сервере Slave. Пример:

SET GLOBAL gtid_slave_pos = "0-1-2";
CHANGE MASTER TO 
   MASTER_HOST="<ip_server1>", 
   MASTER_PORT=3306, 
   MASTER_USER="replication",  
   MASTER_PASSWORD="password", 
   MASTER_USE_GTID=slave_pos;
START SLAVE

Перенос БД завершен, необходимо проверить работу сервиса. Выполните команду : 

SHOW SLAVE STATUS\G;

Вывод должен содержать следующее состояние репликации  на 2х серверах: 

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.152.12
                   Master_User: replication
                   Master_Port: 5890
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000003
           Read_Master_Log_Pos: 2682485
                Relay_Log_File: mysqld-relay-bin.000002
                 Relay_Log_Pos: 2674921
         Relay_Master_Log_File: mysql-bin.000003
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB:
  • Нет меток