Vytvoření zálohy MySQL pomocí nástroje XtraBackup

Percona XtraBackup je nástroj pro horké zálohy databází MySQL.

Při vytváření zálohy dat nejsou uzamčeny žádné tabulky a váš systém nadále funguje bez jakýchkoli omezení.

XtraBackup 2.4 může vytvářet záložní kopie tabulek InnoDBXtraDB и MyISAM na serverech MySQL 5.11, 5.5, 5.6 a 5.7a také na serveru percona pro MySQL с XtraDB.

Pracovat s MySQL 8.x měla by být použita verze XtraBackup 8.x. Tento článek bude mluvit pouze o XtraBackup 2.4.

Hlavní výhodou XtraBackup je, že tento nástroj je vhodný pro vytváření záložních kopií vysoce zatížených servery, stejně jako pro systémy s nízkým počtem transakcí.

Pokud je celková velikost vašich databází MySQL významná (desítky gigabajtů), pak standardní nástroj mysqldump vám neumožní rychle vytvořit záložní kopii a obnovení výpisu bude trvat hodně času.

Instalace

Instalace XtraBackup z úložiště nakloněný Percona.

Spusťte postupně následující pří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 instalaci spusťte příkaz xtrabackup -v. Protože je důležité se ujistit, že nástroj na serveru funguje správně. V důsledku toho se na obrazovce zobrazí něco takového:

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

Vytvoření zálohy MySQL pomocí nástroje XtraBackup

Přístupová práva, oprávnění a oprávnění 

XtraBackup by měl být schopen:

  • Připojte se k serveru MySQL.

  • Mít přístupová práva k adresáři jsou data

  • Při vytváření záložní kopie mějte práva pro zápis do zadaného parametru cílový směr katalog.

Co je datadir?

jsou data je adresář, kde je databázový server MySQL ukládá data. Všechny databáze, všechny tabulky se nacházejí tam. Ve většině distribucí Linux Ve výchozím nastavení je tento adresář / var / lib / mysql.

Co je to adresář target-dir?

cílový směr - Toto je adresář, kam bude záloha uložena.

Uživatel databáze potřebuje následující přístupová práva k tabulkám a databázím, které mají být zálohovány:

  • ZNOVU NAČÍST a ZAMKNOUT STOLY

  • KLIENT REPLIKACE

  • VYTVOŘTE TABLESPACE

  • PROCES

  • SUPER

  • CREATE

  • INSERT

  • SELECT

Konfigurace 

Konfigurace XtraBackup provádí pomocí voleb, které se chovají stejně jako standardní volby MySQL.

Co to znamená?

Konfigurační parametry lze zadat buď na příkazovém řádku nebo v konfiguračním souboru DBMS, například v /etc/my.cnf.

Nástroj XtraBackup čte oddíly po spuštění [Mysqld] и [xtrabackup] z konfiguračních souborů MySQL. To se provádí tak, aby obslužný program mohl používat nastavení vašeho DBMS, aniž by musel při každém zálohování ručně specifikovat parametry.

Například hodnota jsou data a některé parametry InnoDB XtraBackup získáme z konfigurace vašeho DBMS.

Pokud chcete, aby XtraBackup fungoval, chcete přepsat parametry, které jsou v sekci [Mysqld], pak je stačí zadat v konfiguračním souboru v sekci [xtrabackup]. Protože budou čteny později, jejich priorita bude vyšší.

Nemusíte přidávat žádné parametry my.cnf. Všechny požadované parametry lze zadat na příkazovém řádku. Obvykle jediná věc, která se dá do sekce pohodlně umístit [xtrabackup] vaše my.cnf je parametr cílový_adresář, který ve výchozím nastavení určuje adresář, kam se budou ukládat zálohy. Ale to je volitelné.

Příklad zadání cesty k adresáři se záložní kopií v my.cnf:

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

Zálohovací skript

K vytvoření zálohy můžete použít následující 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

Co se stane během provádění skriptu?

Nejprve vymažeme (smažeme) adresář, do kterého budeme ukládat záložní kopii:

rm -rf /mysql/backup.

Poté pomocí nástroje XtraBackup vytvořte záložní kopii a uložte ji /mysql/backup/:

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

Dříve jsme vytvořili uživatele v MySQL xtrabackup s požadovanými právy. Pomocí parametru target-dir určíme adresář, kam se má záloha uložit.

Важный момент!

Všimněte si řádku skriptu:

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

Katalogová data /mysql/backup nejsou konzistentní, dokud nejsou uvařené. 

Faktem je, že při kopírování souborů může dojít ke změnám. Úkon xtrabackup --prepare --target-dir=/mysql/backup zajišťuje, že zálohovaná data jsou v průběhu času dokonale konzistentní.

Operaci přípravy dat můžete provést na libovolném počítači. Na serveru, kde je umístěn zdrojový DBMS, to není nutné. Zálohu můžete zkopírovat na cílový server a připravit ji tam.

Poslední věcí, kterou uděláme, je vytvoření archivu, do kterého umístíme zálohu:

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

Obnovení zálohy 

Než budete moci obnovit zálohu na cílový server, musí data projít přípravnou fází. Jak to udělat, viz výše.

Proces obnovy dat je velmi jednoduchý. Musíte extrahovat zálohu z archivu a nahradit data v jsou data.

Jak nahradit data v datadir?

Zvažme dvě možnosti.

Možnost 1

Použijte nástroj XtraBackup. Musíte zadat možnost --copy-back

Níže uvedený příkaz přenese zálohu do jsou data cílový server:

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

Možnost 2

Můžete to udělat jinak, obejít se bez nástroje XtraBackup.

Vše, co musíte udělat, je zkopírovat zálohu do jsou data. Můžete to udělat s cp nebo rsync.

Je důležité pochopit, že postup obnovy zálohy se scvrkává na pouhé nahrazení obsahu adresáře jsou data.

Než začnete s obnovou zálohy na cílovém serveru, musíte:

  • Zastavte server MySQL.

  • Vymazat složku jsou data nebo přesunout jeho obsah na jiné místo. Katalog jsou data musí být prázdné.

Po dokončení přenosu dat do jsou data MySQL server lze spustit.

Použité materiály

Oficiální dokumentace percona XtraBackup.

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster