Contactați XtraBackup este un utilitar pentru copiile de siguranță ale bazelor de date MySQL.
Când creați o copie de rezervă a datelor, niciun tabel nu este blocat, iar sistemul dumneavoastră continuă să funcționeze fără restricții.
XtraBackup 2.4 poate crea copii de rezervă ale tabelelor InnoDB, XtraDB и MyISAM pe servere MySQL 5.11, 5.5, 5.6 și 5.7, și, de asemenea, pe server percona pentru MySQL с XtraDB.
A lucra cu MySQL 8.x ar trebui folosită versiunea XtraBackup 8.x. Acest articol va vorbi doar despre XtraBackup 2.4.
Principalul avantaj XtraBackup este că acest utilitar este potrivit pentru crearea de copii de rezervă ale fișierelor încărcate puternic servere, precum și pentru sistemele cu un număr redus de tranzacții.
Dacă dimensiunea totală a bazelor de date MySQL este semnificativă (zeci de gigaocteți), atunci utilitarul standard mysqldump nu vă va permite să creați rapid o copie de rezervă, iar restaurarea depozitului va dura mult timp.
Instalare
Instalare XtraBackup din depozit potrivit Percona.
Completați următoarea comandă:
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. Din moment ce, este important să vă asigurați că utilitarul funcționează corect pe server. Ca rezultat, ceva de genul acesta va fi afișat pe ecran:
xtrabackup: argumente server recunoscute: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect - innodbflushlogattrxcommit=0xtrabackup versiunea 2.4.20 bazată pe serverul MySQL 5.7.26 Linux (x8664) (ID revizie: c8b4056)

Drepturi de acces, permisiuni și privilegii
XtraBackup ar trebui să poată:
Conectați-vă la serverul dvs. MySQL.
Aveți drepturi de acces la director datadir.
Când creați o copie de rezervă, aveți drepturi de scriere pentru parametrul specificat target-dir catalog.
Ce este datadir?
datadir este directorul în care se află serverul bazei de date MySQL stochează date. Toate bazele de date, toate tabelele sunt localizate acolo. În majoritatea distribuțiilor Linux În mod implicit, acest director este /var/lib/mysql.
Ce este directorul target-dir?
target-dir - Acesta este directorul în care va fi salvată copia de rezervă.
Utilizatorul bazei de date are nevoie de următoarele drepturi de acces la tabelele și bazele de date pentru a fi copiate:
REÎNCĂRCARE și BLOCARE TABELE
CLIENT DE REPLICAȚIE
CREAȚI UN SPAȚIU DE MESĂ
PROCESUL
SUPER
CREATE
INSERT
SELECT
configurație
configurație XtraBackup realizat folosind opțiuni care se comportă la fel ca opțiunile standard MySQL.
Ce înseamnă?
Parametrii de configurare pot fi specificați fie pe linia de comandă, fie în fișierul de configurare DBMS, de exemplu în /etc/my.cnf.
Utilitarul XtraBackup citește partițiile după lansare [Mysqld] и [xtrabackup] din fișierele de configurare MySQL. Acest lucru se face astfel încât utilitarul să poată utiliza setările SGBD-ului dvs. fără a fi necesar să specificați manual parametrii în timpul fiecărei copii de siguranță.
De exemplu, valoarea datadir si unii parametri InnoDB Primim XtraBackup din configurația SGBD-ului dumneavoastră.
Dacă pentru ca XtraBackup să funcționeze, doriți să suprascrieți parametrii care sunt în secțiune [Mysqld], apoi specificați-le în fișierul de configurare din secțiune [xtrabackup]. Deoarece vor fi citite mai târziu, prioritatea lor va fi mai mare.
Nu trebuie să adăugați niciun parametru la my.cnf. Toți parametrii necesari pot fi specificați pe linia de comandă. De obicei, singurul lucru care poate fi plasat convenabil în secțiune [xtrabackup] dumneavoastră my.cnf este un parametru dir_țintă, care specifică implicit directorul în care vor fi plasate copiile de rezervă. Dar acest lucru este opțional.
Un exemplu de specificare a căii către director cu o copie de rezervă my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Script de rezervă
Puteți utiliza următorul script pentru a crea o copie de rezervă:
#!/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 scriptului?
În primul rând, ștergem (ștergem) directorul în care vom salva copia de rezervă:
rm -rf /mysql/backup.
Apoi, folosind utilitarul XtraBackup creați o copie de rezervă și salvați-o /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupAnterior, am creat un utilizator în MySQL xtrabackup cu privilegiile necesare. Folosind parametrul target-dir specificăm directorul în care ar trebui să fie salvată backup-ul.
Un punct important!
Rețineți linia de script:
xtrabackup --prepare --target-dir=/mysql/backup
Date de catalog /mysql/backup nu sunt consistente până când nu sunt gătite.
Faptul este că modificările pot apărea în timpul copierii fișierelor. Operațiune xtrabackup --prepare --target-dir=/mysql/backup face datele de rezervă perfect coerente în timp.
Puteți efectua operația de pregătire a datelor pe orice mașină. Nu este nevoie să faceți acest lucru pe serverul unde se află SGBD-ul sursă. Puteți copia backup-ul pe serverul țintă și îl puteți pregăti acolo.
Ultimul lucru pe care îl facem este să creăm o arhivă în care plasăm backup-ul:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backupRestaurarea unei copii de rezervă
Înainte de a putea restaura o copie de rezervă pe serverul țintă, datele trebuie să treacă printr-o fază de pregătire. Vezi mai sus cum să faci asta.
Procesul de recuperare a datelor este foarte simplu. Trebuie să extrageți copia de rezervă din arhivă și să înlocuiți datele în datadir.
Cum să înlocuiți datele în datadir?
Să luăm în considerare două opțiuni.
Opțiunea 1
Utilizați utilitarul XtraBackup. Trebuie să specificați o opțiune --copy-back.
Comanda de mai jos va transfera backup-ul la datadir server țintă:
xtrabackup --copy-back --target-dir=/mysql/backupOpțiunea 2
O poți face altfel, fără utilitate XtraBackup.
Tot ce trebuie să faceți este să copiați copia de rezervă în datadir. Puteți face asta cu cp sau rsync.
Este important să înțelegeți că procedura de restabilire a unei copii de rezervă se reduce doar la înlocuirea conținutului directorului datadir.
Înainte de a începe să restaurați o copie de rezervă pe serverul țintă, trebuie să:
Opriți serverul MySQL.
Ștergeți folderul datadir sau mutați conținutul în altă locație. Catalog datadir trebuie să fie goală.
După finalizarea transferului de date către datadir Serverul MySQL poate fi pornit.
Materiale folosite
.
Sursa: www.habr.com
