Krijimi i një kopje rezervë MySQL duke përdorur programin XtraBackup

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 InnoDBXtraDB и 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)

Krijimi i një kopje rezervë MySQL duke përdorur programin XtraBackup

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

Dokumentacioni zyrtar Perkona XtraBackup.

Burimi: www.habr.com

Shto një koment