Percona XtraBackup — este un utilitar pentru copierea de rezervă în timp real a bazelor de date MySQL.
În timpul creării copiei de rezervă a datelor, nu se blochează tabelele, sistemul dumneavoastră continuă să funcționeze fără nicio restricție.
XtraBackup 2.4 poate crea copii de rezervă ale tabelilor InnoDB, XtraDB și MyISAM pe servere MySQL 5.11, 5.5, 5.6 și 5.7, precum și pe serverul Percona pentru MySQL de XtraDB.
Pentru a lucra cu MySQL 8.x trebuie să utilizați versiunea XtraBackup 8.x. În acest articol ne vom referi doar la XtraBackup 2.4.
Principalul avantaj XtraBackup constă în faptul că acest utilitar este potrivit atât pentru crearea de copii de rezervă ale sistemelor cu o încărcare mare servere, cât și pentru sistemele cu un număr scăzut de tranzacții.
Dacă dimensiunea totală a bazelor dumneavoastră de date MySQL este semnificativă (zeci de gigabytes), atunci utilitarul standard mysqldump nu va permite crearea rapidă a unei copii de rezervă, iar restaurarea dump-ului va necesita mult timp.
Instalare
Instalare XtraBackup din depozit apt Percona.
Executați următoarele comenzi în ordine:
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. După instalare, executați comanda xtrabackup -v. Este important să vă asigurați că utilitarul funcționează corect pe server. Pe ecran ar trebui să apară ceva de genul:
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)

Drepturile de acces, permisiunile și privilegiile
XtraBackup trebuie să aibă capacitatea de:
A se conecta la serverul dumneavoastră MySQL.
A avea drepturi de acces la directorul datadir.
În timpul creării copiei de rezervă trebuie să aibă drepturi de scriere în directorul specificat prin parametrul target-dir ceva.
Ce este datadir?
datadir — este directorul în care serverul de baze de date MySQL stochează datele. Toate bazele de date, toate tabelele se află acolo. În cele mai multe distribuții Linux, acest director este în mod implicit /var/lib/mysql.
Ce este directorul target-dir?
target-dir — este directorul în care va fi salvată copia de rezervă.
Utilizatorului bazei de date îi sunt necesare următoarele drepturi de acces la tabelele și bazele de date care urmează să fie copiate:
RELOAD și LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREAȚI
INSERT
SELECT
Configurație
Configurație XtraBackup se execută folosind opțiuni care se comportă la fel ca și parametrii standard MySQL.
Ce înseamnă asta?
Parametrii de configurație pot fi specificați fie în linia de comandă, fie în fișierul de configurație al SGBD-ului, de exemplu în /etc/my.cnf.
Utilitarul XtraBackup citește secțiunile [mysqld] și [xtrabackup] din fișierele de configurație MySQL. Acest lucru se face pentru ca utilitarul să poată folosi setările SGBD-ului tău fără a fi necesar să specifici parametrii manual la fiecare backup.
De exemplu, valoarea datadir și unele setări InnoDB XtraBackup sunt preluate din configurația SGBD-ului tău.
Dacă dorești să suprascrii parametrii pentru XtraBackup care se află în secțiunea [mysqld], atunci trebuie doar să-i specifici în fișierul de configurație în secțiunea [xtrabackup]. Deoarece aceștia vor fi citiți ulterior, prioritatea lor va fi mai mare.
Poate nu trebuie să adaugi parametrii în my.cnf. Toți parametrii necesari pot fi specificați în linia de comandă. De obicei, singurul lucru care poate fi convenient de plasat în secțiunea [xtrabackup] a ta my.cnf — este parametrul target_dir, care, prin default, definește directorul în care vor fi plasate copiile de rezervă. Dar asta nu este obligatorie.
Exemplu de specificare a căii către directorul cu copia de rezervă în my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Scenariul de creare a unei copii de rezervă
Pentru a crea o copie de rezervă, poți folosi următorul scenariu:
#!/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/backupCe se întâmplă în timpul execuției scenariului?
Primul lucru pe care îl facem este să curățăm (să ștergem) directorul în care vom salva copia de rezervă:
rm -rf /mysql/backup.
Apoi, folosind utilitarul XtraBackup creăm o copie de rezervă și o salvăm în /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupPreliminar, în MySQL am creat un utilizator xtrabackup cu privilegii necesare. Folosind parametrul target-dir specificăm directorul în care ar trebui să salvăm copia de rezervă.
Un aspect important!
Atenție la linia de scenariu:
xtrabackup --prepare --target-dir=/mysql/backup
Datele din directorul /mysql/backup nu sunt consistente până nu sunt pregătite.
Este vorba că, în timpul copierii fișierelor, ar putea să fi avut loc modificări. Operația xtrabackup --prepare --target-dir=/mysql/backup face ca datele copiei de rezervă să fie perfecte din punct de vedere temporal.
Operația de pregătire a datelor poate fi realizată pe orice mașină. Nu este nevoie să fie efectuată pe serverul unde se află SGBD-ul inițial. Poți copia copia de rezervă pe serverul țintă și să o pregătești acolo.
Ultimul pas pe care-l facem este să creăm un arhiv, în care să plasăm backup-ul nostru:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backupRestaurarea backup-ului
Înainte de a începe restaurarea backup-ului pe serverul țintă, datele trebuie să treacă printr-o etapă de pregătire. Cum se face asta, vezi mai sus.
Procesul de restaurare a datelor este foarte simplu. Trebuie să extragi backup-ul din arhivă și să înlocuiești datele în datadir.
Cum să înlocuiești datele în datadir?
Să luăm în considerare două variante.
Opțiunea 1
Folosește utilitarul XtraBackup. Trebuie să specifici opțiunea —copy-back.
Comanda de mai jos va transfera backup-ul în datadir serverul țintă:
xtrabackup --copy-back --target-dir=/mysql/backupOpțiunea 2
Poți proceda diferit, fără utilitar XtraBackup.
Tot ce trebuie să faci este să copiezi backup-ul în datadir. Poți face asta folosind cp sau rsync.
Este important să înțelegi că procedura de restaurare a backup-ului constă doar în înlocuirea conținutului directorului datadir.
Înainte de a începe restaurarea backup-ului pe serverul țintă, este necesar să:
Oprești serverul MySQL.
Ștergi folderul datadir sau să muți conținutul său într-alt loc. Directorul datadir trebuie să fie gol.
După ce transferul de date în datadir serverul MySQL poate fi pornit.
Materiale utilizate
.
Sursa: habr.com
