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

Percona XtraBackup — je to nástroj pro hotové zálohování databází MySQL.

Během vytváření zálohy dat nedochází k blokování tabulek, vaše systém nadále funguje bez jakýchkoli omezení.

XtraBackup 2.4 může vytvářet zálohy tabulek InnoDB, XtraDB a MyISAM na serverech MySQL 5.11, 5.5, 5.6 a 5.7, stejně jako na serveru Percona pro MySQL s XtraDB.

Pro práci s MySQL 8.x je třeba použít verzi XtraBackup 8.x. V tomto článku se budeme věnovat pouze XtraBackup 2.4.

Hlavní výhoda XtraBackup spočívá v tom, že tento nástroj je vhodný jak pro vytváření záloh vysoce zatěžovaných servery, tak i pro systémy s nízkým počtem transakcí.

Pokud je celková velikost vašich databází MySQL značná (desítky gigabajtů), pak standardní nástroj mysqldump neumožní rychle provést vytvoření zálohy, a obnova dumpu zabere hodně času.

Instalace

Instalace XtraBackup z repozitáře apt Percona.

Proveď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. Je důležité zajistit, aby nástroj správně fungoval na serveru. Výsledkem by mělo být něco podobného:

xtrabackup: recognized server arguments: — 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 based on MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

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

Práva přístupu, oprávnění a privilegium 

XtraBackup musí mít možnost:

  • Připojit se k vašemu serveru MySQL.

  • Mít přístup k adresáři datadir. 

  • Při vytváření zálohy mít práva na zápis do adresáře určeného parametrem target-dir adresář.

Co je to datadir?

datadir — je to adresář, ve kterém server databází MySQL ukládá data. Veškeré databáze, všechny tabulky se nacházejí tam. V většině distribucí Linuxu je tímto adresářem ve výchozím nastavení /var/lib/mysql.

Co je to adresář target-dir?

target-dir — je to adresář, do kterého bude uložena záloha.

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

  • RELOAD a LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • PROCESS

  • SUPER

  • VYTVOŘIT

  • INSERT

  • nebude prováděn při nepravdivosti první podmínky. Opravy pomocí

Konfigurace 

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

Co to znamená?

Konfigurační parametry mohou být uvedeny buď v příkazovém řádku, nebo v konfiguračním souboru databázového systému, například v /etc/my.cnf.

Nástroj XtraBackup po spuštění čte sekce [mysqld] a [xtrabackup] z konfiguračních souborů MySQL. To se děje, aby nástroj mohl používat nastavení vaší databáze bez nutnosti zadávat parametry manuálně při každém zálohování.

Například hodnota datadir a některé parametry InnoDB XtraBackup získáváme z konfigurace vaší databáze.

Pokud chcete pro práci XtraBackup přepsat parametry, které se nacházejí v sekci [mysqld], stačí je uvést v konfiguračním souboru v sekci [xtrabackup]. Protože budou přečteny později, jejich priorita bude vyšší.

Nemusíte přidávat žádné parametry do my.cnf. Všechny potřebné parametry je povoleno uvádět v příkazovém řádku. Obvykle je jediné, co by mohlo být užitečné umístit do sekce [xtrabackup] vašeho my.cnf — to je parametr target_dir, který ve výchozím nastavení určuje adresář, do nějž budou uloženy zálohy. Ale to není povinné.

Příklad uvedení cesty k adresáři se zálohou v my.cnf:

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

Skript pro vytvoření zálohy

Pro vytvoření zálohy lze 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 děje během provádění skriptu?

Nejprve vyčistíme (odstraníme) adresář, do kterého budeme ukládat zálohu:

rm -rf /mysql/backup.

Poté pomocí nástroje XtraBackup vytvoříme zálohu a uložíme ji do /mysql/backup/:

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

Předtím jsme v MySQL vytvořili uživatele xtrabackup s požadovanými privilegii. Pomocí parametru target-dir uvádíme adresář, do nějž má být záloha uložena.

Důležitý bod!

Všimněte si řádku skriptu:

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

Data v adresáři /mysql/backup nejsou konzistentní, dokud nebudou připravena. 

Ověřit, že během kopírování souborů mohly nastat změny. Operace xtrabackup --prepare --target-dir=/mysql/backup dělá data zálohy dokonale časově synchronizovaná.

Operaci přípravy dat je možné provést na jakémkoli stroji. Není nutné to dělat na serveru, kde se nachází zdrojová databáze. Můžete zálohu zkopírovat na cílový server a připravit ji tam.

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

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

Obnovení zálohy 

Než začnete s obnovením zálohy na cílovém serveru, musí data projít fází přípravy. Jak to udělat, viz výše.

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

Jak nahradit data v datadir?

Podíváme se na dvě možnosti.

Možnost 1

Využít utilitu XtraBackup. Musíte uvést volbu --copy-back. 

Následující příkaz přesune zálohu do datadir cílového serveru:

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

Možnost 2

Můžete to udělat i jinak, obejít se bez utility XtraBackup.

Vše, co potřebujete, je zkopírovat zálohu do datadir. Můžete to udělat pomocí cp nebo rsync.

Je důležité pochopit, že proces obnovy zálohy spočívá pouze v nahrazení obsahu adresáře datadir.

Před tím, než začnete obnovení zálohy na cílovém serveru, je třeba:

  • Zastavit server MySQL.

  • Vyčistit složku datadir nebo přesunout její obsah na jiné místo. Adresář datadir musí být prázdný.

Po dokončení přenosu dat na datadir můžete spustit server MySQL.

Používané materiály

Oficiální dokumentace Percona XtraBackup.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster