Percona XtraBackup — je to nástroj pro hotové zálohování databází MySQL.
Během vytváření zálohy dat nedochází k blokování tabulek, vaše systém nadále funguje bez jakýchkoli omezení.
XtraBackup 2.4 může vytvářet zálohy tabulek InnoDB, XtraDB a MyISAM na serverech MySQL 5.11, 5.5, 5.6 a 5.7, stejně jako na serveru Percona pro MySQL s XtraDB.
Pro práci s MySQL 8.x je třeba použít verzi XtraBackup 8.x. V tomto článku se budeme věnovat pouze XtraBackup 2.4.
Hlavní výhoda XtraBackup spočívá v tom, že tento nástroj je vhodný jak pro vytváření záloh vysoce zatěžovaných servery, tak i pro systémy s nízkým počtem transakcí.
Pokud je celková velikost vašich databází MySQL značná (desítky gigabajtů), pak standardní nástroj mysqldump neumožní rychle provést vytvoření zálohy, a obnova dumpu zabere hodně času.
Instalace
Instalace XtraBackup z repozitáře apt Percona.
Proveďte postupně následující příkazy:
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 instalaci spusťte příkaz xtrabackup -v. Je důležité zajistit, aby nástroj správně fungoval na serveru. Výsledkem by mělo být něco podobného:
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)

Práva přístupu, oprávnění a privilegium
XtraBackup musí mít možnost:
Připojit se k vašemu serveru MySQL.
Mít přístup k adresáři datadir.
Při vytváření zálohy mít práva na zápis do adresáře určeného parametrem target-dir adresář.
Co je to datadir?
datadir — je to adresář, ve kterém server databází MySQL ukládá data. Veškeré databáze, všechny tabulky se nacházejí tam. V většině distribucí Linuxu je tímto adresářem ve výchozím nastavení /var/lib/mysql.
Co je to adresář target-dir?
target-dir — je to adresář, do kterého bude uložena záloha.
Uživateli databáze jsou potřebná následující přístupová práva k tabulkám a databázím, které mají být zálohovány:
RELOAD a LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
VYTVOŘIT
INSERT
nebude prováděn při nepravdivosti první podmínky. Opravy pomocí
Konfigurace
Konfigurace XtraBackup se provádí pomocí voleb, které se chovají stejně jako standardní parametry MySQL.
Co to znamená?
Konfigurační parametry mohou být uvedeny buď v příkazovém řádku, nebo v konfiguračním souboru databázového systému, například v /etc/my.cnf.
Nástroj XtraBackup po spuštění čte sekce [mysqld] a [xtrabackup] z konfiguračních souborů MySQL. To se děje, aby nástroj mohl používat nastavení vaší databáze bez nutnosti zadávat parametry manuálně při každém zálohování.
Například hodnota datadir a některé parametry InnoDB XtraBackup získáváme z konfigurace vaší databáze.
Pokud chcete pro práci XtraBackup přepsat parametry, které se nacházejí v sekci [mysqld], stačí je uvést v konfiguračním souboru v sekci [xtrabackup]. Protože budou přečteny později, jejich priorita bude vyšší.
Nemusíte přidávat žádné parametry do my.cnf. Všechny potřebné parametry je povoleno uvádět v příkazovém řádku. Obvykle je jediné, co by mohlo být užitečné umístit do sekce [xtrabackup] vašeho my.cnf — to je parametr target_dir, který ve výchozím nastavení určuje adresář, do nějž budou uloženy zálohy. Ale to není povinné.
Příklad uvedení cesty k adresáři se zálohou v my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Skript pro vytvoření zálohy
Pro vytvoření zálohy lze použít následující skript:
#!/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 se děje během provádění skriptu?
Nejprve vyčistíme (odstraníme) adresář, do kterého budeme ukládat zálohu:
rm -rf /mysql/backup.
Poté pomocí nástroje XtraBackup vytvoříme zálohu a uložíme ji do /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupPředtím jsme v MySQL vytvořili uživatele xtrabackup s požadovanými privilegii. Pomocí parametru target-dir uvádíme adresář, do nějž má být záloha uložena.
Důležitý bod!
Všimněte si řádku skriptu:
xtrabackup --prepare --target-dir=/mysql/backup
Data v adresáři /mysql/backup nejsou konzistentní, dokud nebudou připravena.
Ověřit, že během kopírování souborů mohly nastat změny. Operace xtrabackup --prepare --target-dir=/mysql/backup dělá data zálohy dokonale časově synchronizovaná.
Operaci přípravy dat je možné provést na jakémkoli stroji. Není nutné to dělat na serveru, kde se nachází zdrojová databáze. Můžete zálohu zkopírovat na cílový server a připravit ji tam.
Poslední věc, kterou děláme, je vytvoření archivu, do kterého umístíme naši zálohu:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backupObnovení zálohy
Než začnete s obnovením zálohy na cílovém serveru, musí data projít fází přípravy. Jak to udělat, viz výše.
Proces obnovení dat je velmi jednoduchý. Musíte extrahovat zálohu z archivu a nahradit data v datadir.
Jak nahradit data v datadir?
Podíváme se na dvě možnosti.
Možnost 1
Využít utilitu XtraBackup. Musíte uvést volbu --copy-back.
Následující příkaz přesune zálohu do datadir cílového serveru:
xtrabackup --copy-back --target-dir=/mysql/backupMožnost 2
Můžete to udělat i jinak, obejít se bez utility XtraBackup.
Vše, co potřebujete, je zkopírovat zálohu do datadir. Můžete to udělat pomocí cp nebo rsync.
Je důležité pochopit, že proces obnovy zálohy spočívá pouze v nahrazení obsahu adresáře datadir.
Před tím, než začnete obnovení zálohy na cílovém serveru, je třeba:
Zastavit server MySQL.
Vyčistit složku datadir nebo přesunout její obsah na jiné místo. Adresář datadir musí být prázdný.
Po dokončení přenosu dat na datadir můžete spustit server MySQL.
Používané materiály
.
Zdroj: habr.com
