Описание
В данной инструкции рассмотрен перенос БД между серверами 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: