שאַפֿן אַ MySQL באַקקופּ ניצן די XtraBackup נוצן

Percona XtraBackup — это утилита для горячего резервного копирования баз данных מיסקל.

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

XtraBackup 2.4 может создавать резервные копии таблиц InnoDBXtraDB и מייסאַם на серверах MySQL 5.11, 5.5, 5.6 и 5.7, а также на сервере פּערקאָנאַ פאַר מיסקל с XtraDB.

צו אַרבעטן מיט MySQL 8.x следует использовать версию XtraBackup 8.x. В данной статье речь пойдёт о только о XtraBackup 2.4.

די הויפּט מייַלע XtraBackup заключается в том, что эта утилита подходит как для создания резервных копий высоко нагруженных серверов, так и для систем с низким количеством транзакций.

Если общий размер ваших баз данных MySQL значительный (десятки гигабайт), то стандартная утилита מיסקלדומפּ не позволит быстро выполнить создание резервной копии, а восстановление дампа потребует много времени.

ינסטאַלירונג

ינסטאַלירונג XtraBackup פון די ריפּאַזאַטאָרי פיייק Percona.

פאַרענדיקן די פאלגענדע באַפֿעל:

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

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

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. После установки выполните команду xtrabackup -v. Так как, важно убедиться, что утилита корректно работает на сервере. В результате на экране отобразится что-то подобное:

xtrabackup: recognized server arguments: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

שאַפֿן אַ MySQL באַקקופּ ניצן די XtraBackup נוצן

Права доступа, разрешения и привилегии 

XtraBackup должна иметь возможность:

  • Подключиться к вашему серверу MySQL.

  • Обладать правами доступа к каталогу איז דאַטן

  • Во время создания резервной копии иметь права на запись в указанный через параметр target-dir каталог.

Что такое datadir?

איז דאַטן — это каталог, в котором сервер баз данных מיסקל хранит данные. Все базы данных, все таблицы находятся там. В большинстве дистрибутивов Linux по умолчанию таким каталогом является /var/lib/mysql.

Что такое target-dir каталог?

target-dir — это каталог, в который будет сохранена резервная копия.

Пользователю базы данных необходимы следующие права доступа к таблицам и базам данных, подлежащих резервному копированию:

  • RELOAD и LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • פּראָצעס

  • יבער

  • CREATE

  • אַרייַנלייגן

  • אויסקלייַבן

קאָנפיגוראַטיאָן 

קאָנפיגוראַטיאָן XtraBackup выполняется с помощью опций, которые ведут себя так же, как и стандартные параметры MySQL.

וואָס טוט דאָס מיינען?

Конфигурационные параметры могут быть указаны либо в командной строке, либо в файле конфигурации СУБД, например в /etc/my.cnf.

Утилита XtraBackup после запуска считывает разделы [mysqld] и [xtrabackup] из конфигурационных файлов MySQL. Это делается для того, чтобы утилита могла использовать настройки вашей СУБД без необходимости указания параметров руками при каждом резервном копировании.

Например, значение איז דאַטן и некоторые параметры InnoDB XtraBackup получаем из конфигурации вашей СУБД.

Если для работы XtraBackup вы хотите переопределить параметры, которые находятся в секции [mysqld], то просто укажите их в конфигурационном файле в секции [xtrabackup]. Поскольку они будут прочитаны позже, их приоритет будут выше.

Вам можете не добавлять никаких параметров в מיין.קנף. Все требуемые параметры допустимо указывать в командной строке. Обычно единственное, что может быть удобно разместить в разделе [xtrabackup] דיין מיין.קנף — это параметр target_dir, который по умолчанию определяет каталог, в который будут помещены резервные копии. Но это не обязательно.

Пример указания пути к каталогу с резервной копией в מיין.קנף:

[xtrabackup]
target_dir = /data/backups/mysql/

Сценарий создания резервной копии

Для создания резервной копии можно использовать следующий сценарий:

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

Что происходит во время выполнения сценария?

Первый делом мы очищаем (удаляем) каталог, в который будем сохранять резервную копию:

rm -rf /mysql/backup.

Затем, при помощи утилиты XtraBackup создаём резервную копию и сохраняем её в /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Предварительно в MySQL мы создали пользователя xtrabackup с требуемыми привилегиями. При помощи параметра target-dir мы указываем каталог, в который следует сохранить резервную копию.

אַ וויכטיק פונט!

Обратите внимание строку сценария:

xtrabackup --prepare --target-dir=/mysql/backup

Данные в каталоге /mysql/backup не консистентны до тех пор, пока они не будут подготовлены. 

Дело в том, что во время копирования файлов могли произойти изменения. Операция xtrabackup --prepare --target-dir=/mysql/backup делает данные резервной копии идеально согласованными во времени.

Выполнить операцию подготовки данных можно на любой машине. Нет необходимости это делать на сервере, где находится исходная СУБД. Вы можете скопировать резервную копию на целевой сервер и подготовить ее там.

Последнее, что мы делаем — создаём архив, в который помещаем нашу резервную копию:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Восстановление резервной копии 

Прежде чем приступить к восстановлению резервной копии на целевом сервере данные должны пройти этап подготовки. Как это сделать смотрите выше.

Процесс восстановления данных очень простой. Вам нужно извлечь резервную копию из архива и заменить данные в איז דאַטן.

Как заменить данные в datadir?

Рассмотрим два варианта.

Option 1

Воспользоваться утилитой XtraBackup. Нужно указать опцию —copy-baсk

Команда ниже перенесёт резервную копию в איז דאַטן целевого сервера:

xtrabackup --copy-back --target-dir=/mysql/backup

Option 2

Можно поступить иначе, обойтись без утилиты XtraBackup.

Всё, что вам нужно — это скопировать резервную копию в איז דאַטן. Вы можете сделать это при помощи cp אָדער rsync.

Важно понимать, что процедура восстановления резервной копии сводится всего лишь к замене содержимого каталога איז דאַטן.

Перед тем, как начать восстановление резервной копии на целевом сервере необходимо:

  • Остановить MySQL сервер.

  • Очистить папку איז דאַטן или перенести её содержимое в другое место. Каталог איז דאַטן обязательно должен быть пустым.

После завершения переноса данных в איז דאַטן сервер MySQL можно запустить.

מאַטעריאַלס געניצט

באַאַמטער דאַקיומענטיישאַן פּערקאָנאַ XtraBackup.

מקור: www.habr.com

לייגן אַ באַמערקונג