Percona XtraBackup është një mjet për kopje rezervë të nxehtë të bazës së të dhënave MySQL.
Kur krijoni një kopje rezervë të të dhënave, asnjë tabelë nuk është e kyçur dhe sistemi juaj vazhdon të funksionojë pa asnjë kufizim.
XtraBackup 2.4 mund të krijojë kopje rezervë të tabelave InnoDB, XtraDB и Myisam në serverë MySQL 5.11, 5.5, 5.6 dhe 5.7, dhe gjithashtu në server Perkona për MySQL с XtraDB.
Për të punuar me MySQL 8.x duhet të përdoret versioni XtraBackup 8.x. Ky artikull do të flasë vetëm për XtraBackup 2.4.
Përparësia kryesore XtraBackup është se ky mjet është i përshtatshëm si për krijimin e kopjeve rezervë të serverëve shumë të ngarkuar ashtu edhe për sistemet me një numër të vogël transaksionesh.
Nëse madhësia totale e bazave të të dhënave tuaja MySQL është e rëndësishme (dhjetëra gigabajt), atëherë mjeti standard mysqldump nuk do t'ju lejojë të krijoni shpejt një kopje rezervë, dhe rivendosja e hale do të marrë shumë kohë.
Instalim
Instalim XtraBackup nga depoja me vend Percona.
Ekzekutoni komandat e mëposhtme në mënyrë sekuenciale:
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-24
2. Pas instalimit, ekzekutoni komandën xtrabackup -v
. Meqenëse, është e rëndësishme të siguroheni që programi funksionon siç duhet në server. Si rezultat, diçka e tillë do të shfaqet në ekran:
xtrabackup: argumentet e njohura të serverit: - 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 bazuar në serverin MySQL 5.7.26 Linux (x8664) (id-i i rishikimit: c8b4056)
Të drejtat, lejet dhe privilegjet e aksesit
XtraBackup duhet të jetë në gjendje të:
-
Lidhu me serverin tuaj MySQL.
-
Keni të drejta aksesi në drejtori datadir.
-
Kur krijoni një kopje rezervë, keni të drejta shkrimi për parametrin e specifikuar objektiv-drejtues katalogu.
Çfarë është datadir?
datadir është direktoria 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 shpërndarjeve Linux, drejtoria e paracaktuar është /var/lib/mysql.
Çfarë është direktoria target-dir?
objektiv-drejtues - Ky është drejtoria 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 për tu kopjuar:
-
RINGARKONI dhe BLOKONI TABELAT
-
KLIENTI I REPLIKIMIT
-
KRIJONI HAPËSIRË TAKONE
-
PROCESI
-
SUPER
-
CREATE
-
INSERT
-
SELECT
konfiguracion
konfiguracion XtraBackup bëhet duke përdorur opsione që sillen njësoj si opsionet standarde të MySQL.
Çfarë do të thotë kjo?
Parametrat e konfigurimit mund të specifikohen ose në vijën e komandës ose në skedarin e konfigurimit të DBMS, për shembull në /etj/my.cnf.
Shërbimi XtraBackup lexon ndarjet pas nisjes [Mysqld] и [xtrabackup] nga skedarët e konfigurimit MySQL. Kjo është bërë në mënyrë që programi të mund të përdorë cilësimet e DBMS-së tuaj pa pasur nevojë të specifikojë manualisht parametrat gjatë çdo kopje rezervë.
Për shembull, vlera datadir dhe disa parametra InnoDB Ne marrim XtraBackup nga konfigurimi i DBMS-së tuaj.
Nëse që XtraBackup të funksionojë, dëshironi të anashkaloni parametrat që janë në seksion [Mysqld], pastaj thjesht specifikoni ato në skedarin e konfigurimit në seksion [xtrabackup]. Duke qenë se do të lexohen më vonë, prioriteti i tyre do të jetë më i lartë.
Ju nuk keni nevojë të shtoni ndonjë parametër në my.cnf. Të gjithë parametrat e kërkuar mund të specifikohen në vijën e komandës. Zakonisht e vetmja gjë që mund të vendoset me lehtësi në seksion [xtrabackup] juaj my.cnf është një parametër target_dir, i cili si parazgjedhje specifikon direktoriumin ku do të vendosen kopjet rezervë. Por kjo është fakultative.
Një shembull i specifikimit të shtegut për në drejtori me një kopje rezervë në my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Skript rezervë
Ju mund të përdorni skriptin e mëposhtëm për të krijuar një kopje 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/backup
Çfarë ndodh gjatë ekzekutimit të skenarit?
Para së gjithash, ne pastrojmë (fshijmë) drejtorinë në të cilën do të ruajmë kopjen rezervë:
rm -rf /mysql/backup.
Pastaj, duke përdorur programin XtraBackup krijoni një kopje rezervë dhe ruajeni atë /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Më parë, ne krijuam një përdorues në MySQL xtrabackup
me privilegjet e kërkuara. Duke përdorur parametrin target-dir
specifikojmë direktorinë ku duhet të ruhet kopja rezervë.
Një pikë e rëndësishme!
Vini re vijën e skenarit:
xtrabackup --prepare --target-dir=/mysql/backup
Të dhënat e katalogut /mysql/backup nuk janë konsistente derisa të jenë gatuar.
Fakti është se ndryshimet mund të ndodhin gjatë kopjimit të skedarëve. Operacioni xtrabackup --prepare --target-dir=/mysql/backup
i bën të dhënat rezervë krejtësisht të qëndrueshme me kalimin e kohës.
Ju mund të kryeni operacionin e përgatitjes së të dhënave në çdo makinë. Nuk ka nevojë ta bëni këtë në serverin ku ndodhet DBMS burimi. Mund ta kopjoni kopjen rezervë në serverin e synuar dhe ta përgatisni atje.
Gjëja e fundit që bëjmë është të krijojmë një arkiv në të cilin vendosim rezervën tonë:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Rivendosja e një kopje rezervë
Përpara se të rivendosni një kopje rezervë në serverin e synuar, të dhënat duhet të kalojnë një fazë përgatitore. Shihni më lart se si ta bëni këtë.
Procesi i rikuperimit të të dhënave është shumë i thjeshtë. Ju duhet të nxirrni kopjen rezervë nga arkivi dhe të zëvendësoni të dhënat në të datadir.
Si të zëvendësoni të dhënat në datadir?
Le të shqyrtojmë dy opsione.
Opsioni 1
Përdorni shërbimin XtraBackup. Duhet të specifikoni një opsion --kopje-mbrapa.
Komanda e mëposhtme do të transferojë kopjen rezervë në datadir serveri i synuar:
xtrabackup --copy-back --target-dir=/mysql/backup
Opsioni 2
Mund ta bëni ndryshe, bëni pa shërbimin XtraBackup.
E tëra çfarë ju duhet të bëni është të kopjoni kopjen rezervë në datadir. Ju mund ta bëni këtë me cp ose rsync.
Është e rëndësishme të kuptohet se procedura për rivendosjen e një kopje rezervë zbret vetëm në zëvendësimin e përmbajtjes së drejtorisë datadir.
Përpara se të filloni të rivendosni një kopje rezervë në serverin e synuar, duhet:
-
Ndalo serverin MySQL.
-
Pastro dosjen datadir ose zhvendosni përmbajtjen e tij në një vend tjetër. Katalogu datadir duhet të jetë bosh.
Pas përfundimit të transferimit të të dhënave në datadir Serveri MySQL mund të niset.
Materialet e përdorura
Burimi: www.habr.com