Percona XtraBackup — to narzędzie do gorącego tworzenia kopii zapasowych baz danych MySQL.
Podczas tworzenia kopii zapasowej danych nie dochodzi do blokowania tabel, a Twój system działa bez jakichkolwiek ograniczeń.
XtraBackup 2.4 może tworzyć kopie zapasowe tabel InnoDB, XtraDB i MyISAM na serwerach MySQL 5.11, 5.5, 5.6 i 5.7, a także na serwerze Percona do MySQL z XtraDB.
Aby pracować z MySQL 8.x należy korzystać z wersji XtraBackup 8.x. W tym artykule omówimy tylko XtraBackup 2.4.
Największa zaleta XtraBackup objawia się tym, że to narzędzie nadaje się zarówno do tworzenia kopii zapasowych wysoko obciążonych serwerów, jak i dla systemów z małą liczbą transakcji.
Jeśli całkowity rozmiar Twoich baz danych MySQL jest znaczny (dziesiątki gigabajtów), standardowe narzędzie mysqldump nie umożliwi szybkiego wykonania kopii zapasowej, a przywrócenie zrzutu zajmie dużo czasu.
Instalacja
Instalacja XtraBackup z repozytorium apt Percona.
Wykonaj kolejno następujące komendy:
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-242. Po instalacji wykonaj komendę xtrabackup -v. Ważne jest, aby upewnić się, że narzędzie działa prawidłowo na serwerze. W rezultacie na ekranie pojawi się coś takiego:
xtrabackup: rozpoznane argumenty serwera: — 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 na podstawie serwera MySQL 5.7.26 Linux (x8664) (id rewizji: c8b4056)

Uprawnienia, pozwolenia i przywileje
XtraBackup musi mieć możliwość:
Połączyć się z Twoim serwerem MySQL.
Posiadać uprawnienia do katalogu datadir.
Podczas tworzenia kopii zapasowej mieć prawa do zapisu w określonym przez parametr target-dir katalogu.
Co to jest katalog datadir?
datadir — to katalog, w którym serwer baz danych MySQL przechowuje dane. Wszystkie bazy danych, wszystkie tabele znajdują się tam. W większości dystrybucji Linux domyślnie takim katalogiem jest /var/lib/mysql.
Co to jest katalog target-dir?
target-dir — to katalog, w którym zostanie zapisane kopia zapasowa.
Użytkownik bazy danych potrzebuje następujących uprawnień do tabel i baz danych, które mają być kopiowane:
RELOAD i LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
UTWÓRZ
INSERT
SELECT
Konfiguracja
Konfiguracja XtraBackup jest realizowane za pomocą opcji, które działają tak samo, jak standardowe parametry MySQL.
Co to oznacza?
Parametry konfiguracyjne mogą być określone zarówno w wierszu poleceń, jak i w pliku konfiguracyjnym bazy danych, na przykład w /etc/my.cnf.
Narzędzie XtraBackup po uruchomieniu odczytuje sekcje [mysqld] i [xtrabackup] z plików konfiguracyjnych MySQL. Robi to, aby narzędzie mogło korzystać z ustawień bazy danych bez konieczności ręcznego wprowadzania parametrów przy każdym tworzeniu kopii zapasowej.
Na przykład wartość datadir i niektóre parametry InnoDB XtraBackup otrzymujemy z konfiguracji bazy danych.
Jeśli chcesz nadpisać parametry dla działania XtraBackup, które znajdują się w sekcji [mysqld], po prostu określ je w pliku konfiguracyjnym w sekcji [xtrabackup]. Ponieważ będą one odczytane później, będą miały wyższy priorytet.
Możesz nie dodawać żadnych parametrów do my.cnf. Wszystkie wymagane parametry można określić w wierszu poleceń. Zazwyczaj jedyną rzeczą, którą warto umieścić w sekcji [xtrabackup] twojego my.cnf — jest parametr target_dir, który domyślnie określa katalog, do którego będą umieszczane kopie zapasowe. Ale to nie jest konieczne.
Przykład określenia ścieżki do katalogu z kopią zapasową w my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Skrypt tworzenia kopii zapasowej
Aby utworzyć kopię zapasową, można użyć następującego skryptu:
#!/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/backupCo się dzieje podczas wykonywania skryptu?
Na początku czyścimy (usuwamy) katalog, w którym będziemy przechowywać kopię zapasową:
rm -rf /mysql/backup.
Następnie, za pomocą narzędzia XtraBackup tworzymy kopię zapasową i zapisujemy ją w /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupWcześniej w MySQL stworzyliśmy użytkownika xtrabackup z wymaganymi uprawnieniami. Za pomocą parametru target-dir określamy katalog, w którym należy przechować kopię zapasową.
Ważna sprawa!
Zwróć uwagę na linię skryptu:
xtrabackup --prepare --target-dir=/mysql/backup
Dane w katalogu /mysql/backup nie są spójne, dopóki nie zostaną przygotowane.
Chodzi o to, że podczas kopiowania plików mogły zajść zmiany. Operacja xtrabackup --prepare --target-dir=/mysql/backup czyni dane kopii zapasowej idealnie zgodnymi czasowo.
Operację przygotowania danych można przeprowadzić na dowolnej maszynie. Nie ma potrzeby, aby robić to na serwerze, gdzie znajduje się pierwotna baza danych. Możesz skopiować kopię zapasową na docelowy serwer i przygotować ją tam.
Ostatnie, co robimy, to tworzymy archiwum, do którego umieszczamy naszą kopię zapasową:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backupPrzywracanie kopii zapasowej
Zanim rozpoczniesz przywracanie kopii zapasowej na docelowym serwerze, dane muszą przejść przez etap przygotowania. Jak to zrobić, zobacz powyżej.
Proces przywracania danych jest bardzo prosty. Musisz wydobyć kopię zapasową z archiwum i zastąpić dane w datadir.
Jak zastąpić dane w datadir?
Rozważmy dwie opcje.
Opcja 1
Skorzystać z narzędzia XtraBackup. Należy określić opcję --copy-back.
Poniższe polecenie przeniesie kopię zapasową do datadir docelowego serwera:
xtrabackup --copy-back --target-dir=/mysql/backupOpcja 2
Można również postąpić inaczej, obejść się bez narzędzia XtraBackup.
Wszystko, co musisz zrobić, to skopiować kopię zapasową do datadir. Możesz to zrobić za pomocą cp lub rsync.
Ważne jest, aby zrozumieć, że procedura przywracania kopii zapasowej sprowadza się jedynie do zastąpienia zawartości katalogu datadir.
Przed rozpoczęciem przywracania kopii zapasowej na docelowym serwerze należy:
Zatrzymać serwer MySQL.
Wyczyścić folder datadir lub przenieść jego zawartość w inne miejsce. Katalog datadir musi być pusty.
Po zakończeniu przenoszenia danych do datadir serwer MySQL można uruchomić.
Używane materiały
.
Źródło: habr.com
