Percona XtraBackup je nástroj pre horúce zálohy databáz MySQL.
Pri vytváraní zálohy údajov nie sú zamknuté žiadne tabuľky a váš systém pokračuje v prevádzke bez akýchkoľvek obmedzení.
XtraBackup 2.4 môže vytvárať záložné kópie tabuliek InnoDB, XtraDB и MyISAM na serveroch MySQL 5.11, 5.5, 5.6 a 5.7a tiež na serveri percona pre MySQL с XtraDB.
Pracovať s MySQL 8.x mala by sa použiť verzia XtraBackup 8.x. Tento článok bude hovoriť iba o XtraBackup 2.4.
Hlavná výhoda XtraBackup je, že tento nástroj je vhodný na vytváranie záložných kópií vysoko zaťažených serverov, ako aj pre systémy s nízkym počtom transakcií.
Ak je celková veľkosť vašich databáz MySQL významná (desiatky gigabajtov), potom je to štandardný nástroj mysqldump neumožní vám rýchlo vytvoriť záložnú kópiu a obnovenie výpisu zaberie veľa času.
Inštalácia
Inštalácia XtraBackup z úložiska naklonený Percona.
Postupne spustite nasledujúce prí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 inštalácii spustite príkaz xtrabackup -v. Pretože je dôležité uistiť sa, že obslužný program funguje na serveri správne. V dôsledku toho sa na obrazovke zobrazí niečo takéto:
xtrabackup: rozpoznané argumenty servera: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect - innodbflushlogattrxcommit=0xtrabackup verzia 2.4.20 založená na MySQL serveri 5.7.26 Linux (x8664) (ID revízie: c8b4056)

Prístupové práva, oprávnenia a privilégiá
XtraBackup by mal byť schopný:
Pripojte sa k serveru MySQL.
Majte prístupové práva k adresáru datadir.
Pri vytváraní záložnej kópie majte práva na zápis do zadaného parametra cieľový smer katalóg.
Čo je datadir?
datadir je adresár, v ktorom je databázový server MySQL ukladá dáta. Všetky databázy, všetky tabuľky sa nachádzajú tam. Vo väčšine distribúcií Linux Predvolene je tento adresár /var/lib/mysql.
Čo je cieľový adresár?
cieľový smer - Toto je adresár, do ktorého sa uloží záloha.
Užívateľ databázy potrebuje nasledujúce prístupové práva k tabuľkám a databázam, ktoré majú byť zálohované:
ZNOVU NAČÍTAJTE a ZAMKNITE STOLY
KLIENT REPLIKÁCIE
VYTVORIŤ TABUĽOVÝ PRIESTOR
PROCES
SUPER
CREATE
INSERT
SELECT
konfigurácia
konfigurácia XtraBackup pomocou možností, ktoré sa správajú rovnako ako štandardné možnosti MySQL.
Čo to znamená?
Konfiguračné parametre je možné zadať buď na príkazovom riadku alebo v konfiguračnom súbore DBMS, napríklad v /etc/my.cnf.
Nástroj XtraBackup číta oddiely po spustení [Mysqld] и [xtrabackup] z konfiguračných súborov MySQL. Deje sa tak, aby obslužný program mohol použiť nastavenia vášho DBMS bez toho, aby ste museli manuálne špecifikovať parametre počas každého zálohovania.
Napríklad hodnota datadir a niektoré parametre InnoDB XtraBackup získame z konfigurácie vášho DBMS.
Ak má XtraBackup fungovať, chcete prepísať parametre, ktoré sú v sekcii [Mysqld], potom ich stačí špecifikovať v konfiguračnom súbore v sekcii [xtrabackup]. Keďže sa budú čítať neskôr, ich priorita bude vyššia.
Nemusíte pridávať žiadne parametre my.cnf. Všetky požadované parametre je možné zadať na príkazovom riadku. Zvyčajne jediná vec, ktorá sa dá pohodlne umiestniť do sekcie [xtrabackup] tvoj my.cnf je parameter cieľový_adresár, ktorý štandardne určuje adresár, do ktorého sa budú umiestňovať zálohy. Ale toto je voliteľné.
Príklad zadania cesty k adresáru so záložnou kópiou my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Zálohovací skript
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 stane počas vykonávania skriptu?
Najprv vymažeme (vymažeme) adresár, do ktorého uložíme záložnú kópiu:
rm -rf /mysql/backup.
Potom pomocou pomôcky XtraBackup vytvorte záložnú kópiu a uložte ju /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupPredtým sme vytvorili používateľa v MySQL xtrabackup s požadovanými privilégiami. Pomocou parametra target-dir určíme adresár, do ktorého sa má záloha uložiť.
Dôležitý bod!
Všimnite si riadok skriptu:
xtrabackup --prepare --target-dir=/mysql/backup
Katalógové údaje /mysql/backup nie sú konzistentné, kým nie sú uvarené.
Faktom je, že pri kopírovaní súborov môžu nastať zmeny. Prevádzka xtrabackup --prepare --target-dir=/mysql/backup robí zálohovanie dát dokonale konzistentné v priebehu času.
Operáciu prípravy údajov môžete vykonať na akomkoľvek počítači. Nie je potrebné to robiť na serveri, kde sa nachádza zdrojový DBMS. Zálohu môžete skopírovať na cieľový server a pripraviť ju tam.
Posledná vec, ktorú urobíme, je vytvorenie archívu, do ktorého umiestnime zálohu:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupObnovenie zálohy
Pred obnovením zálohy na cieľový server musia údaje prejsť prípravnou fázou. Postup nájdete vyššie.
Proces obnovy dát je veľmi jednoduchý. Zálohu musíte extrahovať z archívu a nahradiť dáta datadir.
Ako nahradiť dáta v datadir?
Zvážme dve možnosti.
Možnosť 1
Použite pomôcku XtraBackup. Musíte zadať možnosť --kopírovať-späť.
Príkaz nižšie prenesie zálohu do datadir cieľový server:
xtrabackup --copy-back --target-dir=/mysql/backupMožnosť 2
Môžete to urobiť inak, bez pomôcky XtraBackup.
Všetko, čo musíte urobiť, je skopírovať zálohu datadir. Môžete to urobiť pomocou cp alebo rsync.
Je dôležité pochopiť, že postup na obnovenie zálohy sa scvrkáva iba na nahradenie obsahu adresára datadir.
Pred začatím obnovy zálohy na cieľovom serveri musíte:
Zastavte server MySQL.
Vymazať priečinok datadir alebo presuňte jeho obsah na iné miesto. Katalóg datadir musí byť prázdny.
Po dokončení prenosu údajov na datadir MySQL server je možné spustiť.
Použité materiály
.
Zdroj: hab.com
