Krijimi i kopjes rezervë MySQL me ndihmën e utilitarit XtraBackup.

Percona XtraBackup është një utilitar për kopjimin e nxehtë të bazave të të dhënave MySQL.

Gjatë krijimit të kopjes rezervë të të dhënave, nuk ndodh bllokimi i tabelave, sistemi juaj vazhdon të punojë pa asnjë kufizim.

XtraBackup 2.4 mund të krijojë kopje rezervë të tabelave InnoDB, XtraDB dhe MyISAM në servera 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ërdoret versioni XtraBackup 8.x. Në këtë artikull do të flasim vetëm për XtraBackup 2.4.

Avantazhi kryesor XtraBackup ka avantazhin se ky utilitar është i përshtatshëm si për krijimin e kopjeve rezervë të ngarkesave të larta serverësh, ashtu edhe për sistemet me numër të ulët transaksionesh.

Nëse dimensioni total i bazave tuaja të të dhënave MySQL është i konsiderueshëm (dhjetëra gigabajt), atëherë utilitari standard mysqldump nuk do t'ju lejojë të krijoni shpejt një kopje rezervë, dhe rikuperimi i dump-it do t'ju kërkojë shumë kohë.

Instalimi

Instalimi XtraBackup nga repozitori apt Percona.

Shkoni radhazi nëpër 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-24

2. Pas instalimit, ekzekutoni komandĂ«n xtrabackup -v. ËshtĂ« e rĂ«ndĂ«sishme tĂ« siguroheni qĂ« utilitari punon siç duhet nĂ« server. Si rezultat, do tĂ« shfaqet diçka si:

xtrabackup: argumente tĂ« 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Ă« MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Krijimi i kopjes rezervë MySQL me ndihmën e utilitarit XtraBackup.

Të drejtat e aksesit, lejet dhe privilegjet 

XtraBackup duhet të ketë mundësinë të:

  • Lidhet me 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 caktuar pĂ«rmes parametrave target-dir katalogu.

ÇfarĂ« Ă«shtĂ« katalogu datadir?

datadir — Ă«shtĂ« katalogu ku serveri i bazave tĂ« tĂ« dhĂ«nave MySQL ruan tĂ« dhĂ«nat. TĂ« gjitha bazat e tĂ« dhĂ«nave, tĂ« gjitha tabelat janĂ« atje. NĂ« shumicĂ«n e distribuimeve tĂ« Linux, katalogu i tillĂ« Ă«shtĂ« me tĂ« drejtë /var/lib/mysql.

ÇfarĂ« Ă«shtĂ« katalogu target-dir?

target-dir — Ă«shtĂ« katalogu ku do tĂ« ruhet kopja rezervĂ«.

Përdoruesit e bazës së të dhënave i nevojiten të drejtë akses në tabelat dhe bazat e të dhënave që duhet të sillen për kopjim:

  • RELOAD dhe LOCK TABLES

  • REPLICATION CLIENT

  • CREAT TABLESPACE

  • PROCESS

  • SUPER

  • CREATE

  • SHTO

  • SELECT

Konfigurimi 

Konfigurimi XtraBackup realizohet me opsionet që sillen ashtu si parametrat standardë të MySQL.

ÇfarĂ« do tĂ« thotĂ« kjo?

Parametrat e konfigurimit mund të tregohen ose në linjën e komandës ose në skedarin e konfigurimit të DBMS, për shembull në /etc/my.cnf.

Utilita XtraBackup, pasi fillon, lexon seksionet [mysqld] dhe [xtrabackup] nga skedarët e konfigurimit të MySQL. Kjo bëhet në mënyrë që utilita të mund të përdorë cilësimet e DBMS-së suaj pa pasur nevojë të tregoni parametrat manualisht gjatë çdo kopjimi rezervë.

Për shembull, vlera datadir dhe disa parametra InnoDB XtraBackup i marrim nga konfigurimi i DBMS-së suaj.

Nëse dëshironi të tejkaloni parametrat për punën e XtraBackup, që janë në seksionin [mysqld], thjesht tregoni ata në skedarin e konfigurimit në seksionin [xtrabackup]. Duke qenë se ata do të lexohen më vonë, prioriteti i tyre do të jetë më i lartë.

Nuk keni nevojĂ« tĂ« shtoni ndonjĂ« parameter nĂ« my.cnf. TĂ« gjitha parametrat e kĂ«rkuar lejohet tĂ« tregohen nĂ« linjĂ«n e komandĂ«s. Normalisht, e vetmja gjĂ« qĂ« mund tĂ« jetĂ« e dobishme tĂ« vendoset nĂ« seksionin [xtrabackup] të my.cnf — Ă«shtĂ« parametri target_dir, i cili nĂ« mĂ«nyrĂ« default pĂ«rcakton katalogun nĂ« tĂ« cilin do tĂ« vendosen kopjet rezervĂ«. Por kjo Ă«shtĂ« e pafund.

Shembull i caktimit të rrugës në katalogun e kopjes rezervë në my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Skenari i krijimit të kopjes rezervë

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 pastruar (fshijmë) katalogun, në të cilin do të ruajmë kopjen rezervë:

rm -rf /mysql/backup.

Pastaj, duke përdorur utilitarin XtraBackup krijojmë kopjen rezervë dhe e ruajmë atë në /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Më parë në MySQL kemi krijuar përdoruesin xtrabackup me privilegjet e nevojshme. Duke përdorur parametrin target-dir tregojmë katalogun në të cilin duhet të ruhet kopja rezervë.

Momenti i rëndësishëm!

Kujdes, rreshti i skenarit:

xtrabackup --prepare --target-dir=/mysql/backup

Të dhënat në katalogun /mysql/backup nuk janë konsistente deri sa të përgatiten. 

Fakti është se gjatë kopjimit të skedareve mund të ndodhin ndryshime. Operacioni xtrabackup --prepare --target-dir=/mysql/backup bën që të dhënat e kopjes rezervë të jenë perfekt të sinkronizuara në kohë.

Ekzekutimi i operacionit të përgatitjes së të dhënave mund të bëhet në çdo makinë. Nuk është e nevojshme ta bëni këtë në serverin ku ndodhet DBMS origjinal. Ju mund të kopjoni kopjen rezervë në serverin e synuar dhe ta përgatisni atje.

E fundit që bëjmë është të krijojmë një arkiv në të cilin vendosim kopjen tonë rezervë:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backup

Rikuperimi i rezervës 

Para se të filloni rikuperimin e rezervës në serverin e synuar, të dhënat duhet të kalojnë në fazën e përgatitjes. Si ta bëni këtë shihni më sipër.

Procesi i rikuperimit të të dhënave është shumë i thjeshtë. Ju nevojitet të nxirrni rezervën 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 opcione.

Varianti 1

Përdorni utilitarin XtraBackup. Duhet të specifikoni opsionin --copy-back. 

Komanda më poshtë do të transferojë rezervën në datadir serverin e synuar:

xtrabackup --copy-back --target-dir=/mysql/backup

Varianti 2

Mund të veproni ndryshe, pa përdorur utilitarin XtraBackup.

E gjithë ajo që ju nevojitet është të kopjoni rezervën në datadir. Ju mund ta bëni këtë me anë të cp ose rsync.

ËshtĂ« e rĂ«ndĂ«sishme tĂ« kuptoni se procedura e rikuperimit tĂ« rezervĂ«s pĂ«rbĂ«het vetĂ«m nga zĂ«vendĂ«simi i pĂ«rmbajtjes sĂ« katalogut datadir.

Para se të filloni rikuperimin e rezervës në serverin e synuar duhet të:

  • NdĂ«rprisni serverin MySQL.

  • Pastroni dosjen datadir ose transferoni pĂ«rmbajtjen e saj nĂ« njĂ« vend tjetĂ«r. Katalogu datadir duhet tĂ« jetĂ« patjetĂ«r i zbrazĂ«t.

Pas përfundimit të transferimit të të dhënave në datadir serverin MySQL mund të niset.

Materialet e përdorura

Dokumentacioni zyrtar Percona XtraBackup.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster