Vytvorenie zálohy MySQL pomocou pomôcky XtraBackup

Percona XtraBackup je nástroj pre horúce zálohy databáz MySQL.

Pri vytváraní zálohy údajov nie sú zamknuté žiadne tabuľky a váš systém pokračuje v prevádzke bez akýchkoľvek obmedzení.

XtraBackup 2.4 môže vytvárať záložné kópie tabuliek InnoDBXtraDB и MyISAM na serveroch MySQL 5.11, 5.5, 5.6 a 5.7a tiež na serveri percona pre MySQL с XtraDB.

Pracovať s MySQL 8.x mala by sa použiť verzia XtraBackup 8.x. Tento článok bude hovoriť iba o XtraBackup 2.4.

Hlavná výhoda XtraBackup je, že táto utilita je vhodná ako pre vytváranie záloh vysoko zaťažených serverov, tak aj pre systémy s nízkym počtom transakcií.

Ak je celková veľkosť vašich databáz MySQL významná (desiatky gigabajtov), ​​potom je to štandardný nástroj mysqldump neumožní vám rýchlo vytvoriť záložnú kópiu a obnovenie výpisu zaberie veľa času.

Inštalácia

Inštalácia XtraBackup z úložiska naklonený Percona.

Postupne spustite nasledujúce príkazy:

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. Po inštalácii spustite príkaz xtrabackup -v. Pretože je dôležité uistiť sa, že obslužný program funguje na serveri správne. V dôsledku toho sa na obrazovke zobrazí niečo takéto:

xtrabackup: rozpoznané argumenty servera: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup verzia 2.4.20 založená na serveri MySQL 5.7.26 Linux (x8664) (revízne ID: c8b4056)

Vytvorenie zálohy MySQL pomocou pomôcky XtraBackup

Prístupové práva, oprávnenia a privilégiá 

XtraBackup by mal byť schopný:

  • Pripojte sa k serveru MySQL.

  • Majte prístupové práva k adresáru datadir

  • Pri vytváraní záložnej kópie majte práva na zápis do zadaného parametra cieľový smer katalóg.

Čo je datadir?

datadir je adresár, v ktorom je databázový server MySQL ukladá dáta. Sú tam všetky databázy, všetky tabuľky. Vo väčšine distribúcií Linuxu je predvolený adresár /var/lib/mysql.

Čo je cieľový adresár?

cieľový smer - Toto je adresár, do ktorého sa uloží záloha.

Užívateľ databázy potrebuje nasledujúce prístupové práva k tabuľkám a databázam, ktoré majú byť zálohované:

  • ZNOVU NAČÍTAJTE a ZAMKNITE STOLY

  • KLIENT REPLIKÁCIE

  • VYTVORIŤ TABUĽOVÝ PRIESTOR

  • PROCES

  • SUPER

  • CREATE

  • INSERT

  • SELECT

konfigurácia 

konfigurácia XtraBackup pomocou možností, ktoré sa správajú rovnako ako štandardné možnosti MySQL.

Čo to znamená?

Konfiguračné parametre je možné zadať buď na príkazovom riadku alebo v konfiguračnom súbore DBMS, napríklad v /etc/my.cnf.

Nástroj XtraBackup číta oddiely po spustení [Mysqld] и [xtrabackup] z konfiguračných súborov MySQL. Deje sa tak, aby obslužný program mohol použiť nastavenia vášho DBMS bez toho, aby ste museli manuálne špecifikovať parametre počas každého zálohovania.

Napríklad hodnota datadir a niektoré parametre InnoDB XtraBackup získame z konfigurácie vášho DBMS.

Ak má XtraBackup fungovať, chcete prepísať parametre, ktoré sú v sekcii [Mysqld], potom ich stačí špecifikovať v konfiguračnom súbore v sekcii [xtrabackup]. Keďže sa budú čítať neskôr, ich priorita bude vyššia.

Nemusíte pridávať žiadne parametre my.cnf. Všetky požadované parametre je možné zadať na príkazovom riadku. Zvyčajne jediná vec, ktorá sa dá pohodlne umiestniť do sekcie [xtrabackup] tvoj my.cnf je parameter cieľový_adresár, ktorý štandardne určuje adresár, do ktorého sa budú umiestňovať zálohy. Ale toto je voliteľné.

Príklad zadania cesty k adresáru so záložnou kópiou my.cnf:

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

Zálohovací skript

Na vytvorenie zálohy môžete použiť nasledujúci skript:

#!/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

Čo sa stane počas vykonávania skriptu?

Najprv vymažeme (vymažeme) adresár, do ktorého uložíme záložnú kópiu:

rm -rf /mysql/backup.

Potom pomocou pomôcky XtraBackup vytvorte záložnú kópiu a uložte ju /mysql/backup/:

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

Predtým sme vytvorili používateľa v MySQL xtrabackup s požadovanými privilégiami. Pomocou parametra target-dir určíme adresár, do ktorého sa má záloha uložiť.

Dôležitý bod!

Všimnite si riadok skriptu:

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

Katalógové údaje /mysql/backup nie sú konzistentné, kým nie sú uvarené. 

Faktom je, že pri kopírovaní súborov môžu nastať zmeny. Prevádzka xtrabackup --prepare --target-dir=/mysql/backup robí zálohovanie dát dokonale konzistentné v priebehu času.

Operáciu prípravy údajov môžete vykonať na akomkoľvek počítači. Nie je potrebné to robiť na serveri, kde sa nachádza zdrojový DBMS. Zálohu môžete skopírovať na cieľový server a pripraviť ju tam.

Posledná vec, ktorú urobíme, je vytvorenie archívu, do ktorého umiestnime zálohu:

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

Obnovenie zálohy 

Pred obnovením zálohy na cieľový server musia údaje prejsť prípravnou fázou. Postup nájdete vyššie.

Proces obnovy dát je veľmi jednoduchý. Zálohu musíte extrahovať z archívu a nahradiť dáta datadir.

Ako nahradiť dáta v datadir?

Zvážme dve možnosti.

Možnosť 1

Použite pomôcku XtraBackup. Musíte zadať možnosť --kopírovať-späť

Príkaz nižšie prenesie zálohu do datadir cieľový server:

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

Možnosť 2

Môžete to urobiť inak, bez pomôcky XtraBackup.

Všetko, čo musíte urobiť, je skopírovať zálohu datadir. Môžete to urobiť pomocou cp alebo rsync.

Je dôležité pochopiť, že postup na obnovenie zálohy sa scvrkáva iba na nahradenie obsahu adresára datadir.

Pred začatím obnovy zálohy na cieľovom serveri musíte:

  • Zastavte server MySQL.

  • Vymazať priečinok datadir alebo presuňte jeho obsah na iné miesto. Katalóg datadir musí byť prázdny.

Po dokončení prenosu údajov na datadir MySQL server je možné spustiť.

Použité materiály

Oficiálna dokumentácia percona XtraBackup.

Zdroj: hab.com

Pridať komentár