Percona XtraBackup je open source zálohovací nástroj pro MySQL. Podporuje všechny varianty MySQL, jako je Percona Server, MariaDB a (Oracle) MySQL. Percona Xtrabackup provádí Hot Backup pro MySQL. Hot Backup znamená vytvořit zálohu serveru MySQL, zatímco běží bez výpadků.
V tomto tutoriálu vám ukážu, jak vytvořit horkou zálohu databáze MySQL pomocí nástroje OpenSource Percona XtraBackup na Ubuntu 16.04 (Xenial Xerus). K provedení zálohy použiji MariaDB jako databázový server, ale stejné nastavení bude fungovat i pro servery MySQL.
Předpoklad
- Server Ubuntu 16.04 – (Xenial Xerus)
- Server MySQL nebo MariaDB
- Kořenová oprávnění
Krok 1 – Instalace Percona XtraBackup
Prvním krokem je instalace nejnovějšího softwaru Percona XtraBackup na náš server Ubuntu. Přihlaste se na svůj server pomocí SSH (nebo na konzoli):
ssh [email protected]
TYPE YOUR PASSWORD
Percona XtraBackup je k dispozici v úložišti Ubuntu, ale my chceme používat nejnovější verzi z úložiště Percona.
Přidejte úložiště Percona stažením balíčku deb z webu a jeho instalací pomocí příkazu dpkg:
wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb
Dále aktualizujte úložiště a nainstalujte Ppercona XtraBackup 2.4 (aktuálně nejnovější verzi):
sudo apt-get update
sudo apt-get install percona-xtrabackup-24
Percona XtraBackup je nainstalován.
Krok 2 – Konfigurace uživatele a adresáře záloh
K provedení horké zálohy musíme vytvořit nového uživatele mysql se speciálními oprávněními a oprávněními. V tomto tutoriálu použiji MariaDB 10.0 jako databázový server. Pokud jste dosud nenainstalovali databázi kompatibilní s MySQL, můžete ji nainstalovat pomocí příkazu níže:
sudo apt-get install mariadb-server mariadb-client
Nastavte bezpečné heslo pro uživatele root pomocí tohoto příkazu:
mysql_secure_installation
Pokud je nainstalována MariaDB, přistupte k prostředí MariaDB/MySQL jako uživatel root pomocí příkazu klienta mysql:
mysql -u root -p
TYPE MySQL PASSWORD
Vytvořte nového uživatele s názvem 'bekupuser s heslem 'mojeheslo ' (zvolte si bezpečné heslo pro váš server!):
CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';
Udělte uživateli následující oprávnění:'RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT'.
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';
FLUSH PRIVILEGES;
exit
Dále vytvořte nový adresář pro uložení záložních souborů MySQL:
mkdir -p /data/backups/mysql/
Byl vytvořen nový záložní uživatel a adresář záloh.
Krok 3 – Proveďte zálohování pomocí Innobackupex
Innobackupex je obal skriptů v Perlu pro program xtrabackup. Je to opravená verze skriptu innobackup poskytovaná oracle, distribuovaná s nástrojem InnoDB Backup. Innobackupex poskytuje zálohu pro celou instanci databáze MySQL pomocí xtrabackup v kombinaci s xbstream a xbcrypt.
V tomto kroku vytvoříme a připravíme úplnou zálohu pro instanci MySQL.
A. Vytvořte zálohu pomocí Innobackupex
V kroku 2 jsme vytvořili nový adresář pro zálohu a přidali nového uživatele zálohy mysql. Nyní je použijeme k vytvoření zálohy pomocí příkazu innobackupex.
Vytvořte zálohu MySQL pomocí innobackupex do nového adresáře '/data/backups/my_backup':
innobackupex --user=bekupuser --password=mypassword --no-timestamp /data/backups/my_backup
Poznámka:
-uživatel =uživatel s požadovanými právy zálohování (krok 2).
-heslo =heslo uživatele zálohy.
--no-timestamp =zakázat vytváření nového podadresáře s časovým razítkem v kořenovém adresáři zálohy.
/data/backups/my_backup =adresář pro zálohu, bude vytvořen automaticky během procesu zálohování. Pokud adresář existuje, zobrazí se chybová zpráva.
Další možnost:
mkdir -p /data/backups/my_backup2
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2
or
innobackupex --user=bekupuser --password=mypassword /data/backups/
Poznámka:
Pokud neexistuje žádný adresář 'my_backup2 ', získáte svůj adresář na základě 'časového razítka ' formát.
Výsledky:
B. Připravte si úplnou zálohu s Innobackupexem
Po vytvoření nové zálohy nejsou data připravena k obnovení. Je zde ještě jeden krok, takže data jsou připravena k obnovení. Potřebujeme „fáze přípravy“, aby bylo možné data obnovit.
Připravte zálohu pomocí innobackupex s volbou --apply-log do adresáře záloh '/data/backups/my_backup ':
innobackupex --apply-log /data/backups/my_backup
Než budete pokračovat, ujistěte se, že je proces dokončen bez chyby.
Pokud máte dostatek paměti a velkou databázi, můžete použít volbu --use-memory=memorynumber říct innobackupex, kolik paměti může používat:
innobackupex --apply-log --use-memory=4G /data/backups/my_backup
Data jsou nyní připravena k obnovení. Můžeme jej obnovit na stejném serveru nebo na jiném serveru, na kterém běží MariaDB.
Krok 4 – Obnovení úplné zálohy pomocí Innobackupex
V tomto kroku obnovíme instanci MySQL pomocí innobackupex.
Než obnovíme instanci MySQL, musíme zastavit proces MySQL příkazem systemctl (proces MariaDB se jmenuje mysql):
systemctl stop mysql
Vytvořte zálohu starého datového adresáře MySQL:
mkdir ~/mysql_old/
mv /var/lib/mysql/* ~/mysql_old/
Dále obnovte instanci mysql z úplné zálohy pomocí innobackupex:
innobackupex --copy-back /data/backups/my_backup
Když uvidíte výsledek 'innobackupex:dokončeno OK ', pak jste úspěšně obnovili svou instanci MySQL.
Nyní změňte vlastníka datového adresáře MySQL na uživatele mysql a spusťte službu znovu:
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
Instance MySQL byla úspěšně obnovena pomocí percona-xtrabackup.