Krijimi i një kopjeje rezervë MySQL duke përdorur mjetin XtraBackup

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-24

2. 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)

Krijimi i një kopjeje rezervë MySQL duke përdorur mjetin XtraBackup

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/backup

Paraprakisht 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/backup

Rikuperimi 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/backup

Variant 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

Dokumentacioni zyrtar Percona XtraBackup.

Burimi: habr.com

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