Percona XtraBackup je nástroj na horúce zálohovanie databáz MySQL.
Pri zálohovaní dát nedochádza k blokovaniu tabuliek, váš systém pokračuje v prevádzke bez akýchkoľvek obmedzení.
XtraBackup 2.4 môže vytvárať zálohy tabuliek InnoDB, XtraDB a MyISAM na serveroch MySQL 5.11, 5.5, 5.6 a 5.7, ako aj na serveri Percona pre MySQL s XtraDB.
Pre prácu s MySQL 8.x je potrebné používať verziu XtraBackup 8.x. V tomto článku sa budeme zaoberať len XtraBackup 2.4.
Hlavná výhoda XtraBackup spočíva v tom, že tento nástroj je vhodný na vytváranie záloh systémov s vysokou záťažou serverov, ako aj pre systémy s nízkym počtom transakcií.
Ak je celková veľkosť vašich databáz MySQL značná (desiatky gigabajtov), štandardný nástroj mysqldump nedovolí rýchlo vykonať vytvorenie zálohy, a obnova dumpu si vyžiada veľa času.
Inštalácia
Inštalácia XtraBackup z repozitára apt Percona.
Postupujte podľa nasledujúcich príkazov:
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 inštalácii vykonajte príkaz xtrabackup -v. Je dôležité sa uistiť, že nástroj správne funguje na serveri. Na obrazovke sa zobrazí niečo podobné:
xtrabackup: rozpoznané serverové argumenty: — 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 založený na MySQL server 5.7.26 Linux (x8664) (revízna identifikácia: c8b4056)

Práva, povolenia a privilégia
XtraBackup musí byť schopný:
Pripojiť sa k vášmu serveru MySQL.
Mať prístup k adresáru datadir.
Pri vytváraní zálohy mať právo zapisovať do určeného prostredníctvom parametra target-dir adresára.
Čo je datadir?
datadir je to adresár, v ktorom server databáz MySQL uchováva dáta. Všetky databázy, všetky tabuľky sú tam. Vo väčšine distribúcií Linuxu je predvoleným adresárom /var/lib/mysql.
Čo je adresár target-dir?
target-dir je to adresár, do ktorého bude uložená záloha.
Používateľ databázy potrebuje nasledujúce práva k tabuľkám a databázam, ktoré sa majú zálohovať:
RELOAD a LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
VYTVORIŤ
INSERT
SELECT
Konfigurácia
Konfigurácia XtraBackup vykonáva sa pomocou volieb, ktoré sa správajú rovnako ako štandardné parametre MySQL.
Čo to znamená?
Konfiguračné parametre môžu byť uvedené buď na príkazovom riadku, alebo v konfiguračnom súbore DBMS, napríklad v /etc/my.cnf.
Nástroj XtraBackup po spustení číta sekcie [mysqld] a [xtrabackup] z konfiguračných súborov MySQL. To sa robí preto, aby nástroj mohol používať nastavenia vašej DBMS bez nutnosti uvádzať parametre ručne pri každé zálohovanie.
Napríklad hodnota datadir a niektoré parametre InnoDB XtraBackup dostávame z konfigurácie vašej DBMS.
Ak pre fungovanie XtraBackup chcete predefinovať parametre, ktoré sa nachádzajú v sekcii [mysqld], jednoducho ich uveďte v konfiguračnom súbore v sekcii [xtrabackup]. Pretože budú prečítané neskôr, ich priorita bude vyššia.
Nemusíte pridávať žiadne parametre do my.cnf. Všetky požadované parametre je prípustné uvádzať na príkazovom riadku. Zvyčajne je jediná vec, ktorá môže byť pohodlne umiestnená v sekcii [xtrabackup] vašej my.cnf - to je parameter target_dir, ktorý predvolene určuje adresár, do ktorého budú umiestnené zálohy. Ale to nie je povinné.
Príklad uvedenia cesty k adresáru so zálohou v my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Skript na vytvorenie zálohy
Na vytvorenie zálohy môžete použiť nasledujúci 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/backupČo sa deje počas vykonávania skriptu?
Najprv vyčistíme (odstránime) adresár, do ktorého budeme ukladať zálohu:
rm -rf /mysql/backup.
Potom, pomocou nástroja XtraBackup vykonáme zálohu a uložíme ju do /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupV MySQL sme predtým vytvorili používateľa xtrabackup s požadovanými oprávneniami. Pomocou parametra target-dir uvádzame adresár, do ktorého by sa mala záloha uložiť.
Dôležitý moment!
Všimnite si riadok skriptu:
xtrabackup --prepare --target-dir=/mysql/backup
Dáta v adresári /mysql/backup nie sú konzistentné, pokiaľ nie sú pripravené.
Ide o to, že počas kopírovania súborov mohli nastať zmeny. Operácia xtrabackup --prepare --target-dir=/mysql/backup robí dáta zálohy ideálne synchronizované v čase.
Operáciu prípravy dát je možné vykonať na akejkoľvek zariadení. Nie je potrebné to robiť na serveri, kde sa nachádza pôvodná DBMS. Môžete skopírovať zálohu na cieľový server a pripraviť ju tam.
Posledné, čo robíme, je vytvorenie archívu, do ktorého umiestnime našu zálohu:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupObnovenie zálohy
Predtým, než začnete s obnovením zálohy na cieľovom serveri, musia dáta prejsť predprípravou. Ako to urobiť, si pozrite vyššie.
Proces obnovy dát je veľmi jednoduchý. Musíte extrahovať zálohu z archívu a nahradiť dáta v datadir.
Ako nahradiť dáta v datadire?
Zvážte dve možnosti.
Varianta 1
Využiť nástroj XtraBackup. Musíte zadať voľbu --copy-back.
Príkaz nižšie presunie zálohu do datadir cieľového servera:
xtrabackup --copy-back --target-dir=/mysql/backupVarianta 2
Môžete to urobiť aj inak, bez nástroja XtraBackup.
Všetko, čo potrebujete, je skopírovať zálohu do datadir. Môžete to urobiť pomocou cp alebo rsync.
Je dôležité pochopiť, že postup obnovy zálohy spočíva jednoducho v nahradení obsahu adresára datadir.
Pred začiatkom obnovy zálohy na cieľovom serveri je potrebné:
Zastaviť server MySQL.
Vyčistiť zložku datadir alebo presunúť jej obsah na iné miesto. Adresár datadir musí byť nevyhnutne prázdny.
Po dokončení presunu dát do datadir servera MySQL môžete spustiť.
Používané materiály
.
Zdroj: habr.com
