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