Percona XtraBackup â Ă«shtĂ« njĂ« utilit pĂ«r kopjim tĂ« nxehtĂ« tĂ« bazave tĂ« tĂ« dhĂ«nave MySQL.
Gjatë krijimit të kopjes së rezervës, tabela nuk bllokohet, sistemi juaj vazhdon të punojë pa ndonjë kufizim.
XtraBackup 2.4 mund të krijojë kopje rezervë të tabelave InnoDB, XtraDB dhe MyISAM në serverat MySQL 5.11, 5.5, 5.6 dhe 5.7, si dhe në serverin Percona për MySQL me XtraDB.
Për të punuar me MySQL 8.x duhet të përdorni versionin XtraBackup 8.x. Në këtë artikull do të flasim vetëm për XtraBackup 2.4.
Avantazhi kryesor XtraBackup është se ky utilit është i përshtatshëm si për krijimin e kopjeve rezervë të sistemeve me ngarkesë të lartë servera, ashtu edhe për sistemet me numër të ulët transaksionesh.
Nëse madhësia totale e bazave të të dhënave MySQL është e konsiderueshme (dhjetëra gigabajt), utiliti standard mysqldump nuk do të lejojë krijimin e shpejtë të kopjes rezervë, dhe rikthimi i dump-it do të kërkojë shumë kohë.
Instalimi
Instalimi XtraBackup nga repositori apt Percona.
Ekzekutoni radhazi komandat e mëposhtme:
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. Pas instalimit, ekzekutoni komandën xtrabackup -v. Pra kët, është e rëndësishme të siguroheni që utilita funksionon siç duhet në server. Si rezultat, në ekran do të shfaqet diçka si kjo:
xtrabackup: argumentet e serverit tĂ« njohura: â 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 e bazuar nĂ« MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

TĂ« drejtat e aksesit, lejet dhe privilegjetÂ
XtraBackup duhet të ketë aftësinë të:
Kthehet në serverin tuaj MySQL.
TĂ« ketĂ« tĂ« drejtat e aksesit nĂ« katalogun datadir.Â
Gjatë krijimit të kopjes rezervë të ketë të drejtat për të shkruar në katalogun e specifikuar me parametrin target-dir katalogu.
ĂfarĂ« Ă«shtĂ« katalogu datadir?
datadir â Ă«shtĂ« katalogu ku serveri i bazĂ«s sĂ« tĂ« dhĂ«nave MySQL ruan tĂ« dhĂ«nat. TĂ« gjitha bazat e tĂ« dhĂ«nave, tĂ« gjitha tabelat janĂ« aty. NĂ« shumicĂ«n e distribucioneve Linux, ky katalog Ă«shtĂ« i paracaktuar /var/lib/mysql.
ĂfarĂ« Ă«shtĂ« katalogu target-dir?
target-dir â Ă«shtĂ« katalogu ku do tĂ« ruhet kopja rezervĂ«.
Përdoruesi i bazës së të dhënave ka nevojë për të drejtat e mëposhtme të aksesit në tabelat dhe bazat e të dhënave që do të rezervohen:
RELOAD dhe LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
KRIJO
INSERT
SELECT
KonfigurimiÂ
Konfigurimi XtraBackup ekzekutohet duke përdorur opsione që veprojnë në të njëjtën mënyrë si parametrat standardë të MySQL.
ĂfarĂ« do tĂ« thotĂ« kjo?
Parametrat e konfigurimit mund të specifikohen ose në komandën e linjës, ose në skedarin e konfigurimit të DBMS, për shembull në /etc/my.cnf.
Utilitarin XtraBackup, pas aktivizimit, lexon seksionet [mysqld] dhe [xtrabackup] nga skedarët e konfigurimit të MySQL. Kjo bëhet që utilitari të mund të përdorë cilësimet e DBMS tuaj pa pasur nevojë për të specifikuar parametrat manualisht për çdo kopjim të rezervës.
Për shembull, vlera datadir dhe disa parametra InnoDB XtraBackup i marrim nga konfigurimi i DBMS tuaj.
Nëse dëshironi të rishikoni parametrat për funksionimin e XtraBackup që ndodhen në seksionin [mysqld], thjesht specificoni ato në skedarin e konfigurimit në seksionin [xtrabackup]. Pasi që ato do të lexohen më vonë, prioriteti i tyre do të jetë më i lartë.
Nuk Ă«shtĂ« e nevojshme tĂ« shtoni ndonjĂ« parametrat nĂ« my.cnf. TĂ« gjitha parametrat e nevojshĂ«m mund tĂ« specifikohen nĂ« komandĂ«n e linjĂ«s. Zakonisht, e vetmja gjĂ« qĂ« mund tĂ« jetĂ« e pĂ«rshtatshme tĂ« vendoset nĂ« seksionin [xtrabackup] të my.cnf â Ă«shtĂ« parametri target_dir, i cili nĂ« mĂ«nyrĂ« tĂ« paracaktuar pĂ«rcakton katalogun nĂ« tĂ« cilin do tĂ« vendosen kopjet e rezervĂ«s. Por kjo nuk Ă«shtĂ« e detyrueshme.
Shembulli i përcaktimit të rrugës për katalogun e kopjes së rezervës në my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Skenari për krijimin e kopjës së rezervës
Për të krijuar një kopje rezervë, mund të përdorni skenarin e mëposhtëm:
#!/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ĂfarĂ« ndodh gjatĂ« ekzekutimit tĂ« skenarit?
Së pari, ne pastrojmë (fshijmë) katalogun ku do të ruajmë kopjen rezervë:
rm -rf /mysql/backup.
Pastaj, me ndihmën e utilitarit XtraBackup krijojmë një kopje rezervë dhe e ruajmë në /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupParaprakisht në MySQL kemi krijuar përdoruesin xtrabackup me privilegjet e nevojshme. Me ndihmën e parametrit target-dir ne tregojmë katalogun ku duhet të ruhet kopja rezervë.
Moment i rëndësishëm!
Vini re rreshtin e skenarit:
xtrabackup --prepare --target-dir=/mysql/backup
TĂ« dhĂ«nat nĂ« katalog /mysql/backup nuk janĂ« konsistente deri sa tĂ« pĂ«rgatiten.Â
E vërteta është se gjatë kopjimit të skedarëve kanë mundur të ndodhin ndryshime. Operacioni xtrabackup --prepare --target-dir=/mysql/backup bën të dhënat e kopjes rezervë plotësisht të pajtueshme me kohën.
Operacionin e përgatitjes së të dhënave mund ta ekzekutoni në çdo makinë. Nuk ka nevojë ta bëni atë në serverin ku ndodhet DB e origjinës. Mund ta kopjoni kopjen rezervë në serverin për qëllim dhe ta përgatisni atje.
E fundit, që ne bëjmë, është të krijojmë një arkiv, në të cilin vendosim backup-in tonë:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F %H %M %S)».gz /mysql/backupRikuperimi i backup-itÂ
Para se të filloni rikuperimin e backup-it në serverin target, të dhënat duhet të kalojnë një fazë përgatitorje. Si ta bëni këtë, shihni më lart.
Procesi i rikuperimit të të dhënave është shumë i thjeshtë. Ju duhet të nxirrni backup-in nga arkivi dhe të zëvendësoni të dhënat në datadir.
Si të zëvendësoni të dhënat në datadir?
Le të shqyrtojmë dy mundësi.
Mundësia 1
PĂ«rdorni komandĂ«n XtraBackup. Duhet tĂ« tregoni opsionin --copy-back.Â
Komanda më poshtë do të transferojë backup-in në datadir serverin target:
xtrabackup --copy-back --target-dir=/mysql/backupVariant 2
Mund të veproni ndryshe, pa përdorur komandën XtraBackup.
Gjithçka që ju nevojitet është të kopjoni backup-in në datadir. Mund ta bëni këtë me cp ose rsync.
ĂshtĂ« e rĂ«ndĂ«sishme tĂ« kuptoni se procedura e rikuperimit tĂ« backup-it pĂ«rbĂ«het thjesht nga zĂ«vendĂ«simi i pĂ«rmbajtjes sĂ« direktoriumit datadir.
Para se të filloni rikuperimin e backup-it në serverin target, është e nevojshme:
TĂ« ndaloni serverin MySQL.
Të pastroni dosjen datadir ose të transferoni përmbajtjen e saj në një vend tjetër. Direktoriumi datadir duhet patjetër të jetë bosh.
Pas përfundimit të transferimit të të dhënave në datadir serverin MySQL mund të filloni.
Materialet e përdorura
.
Burimi: habr.com
