Funkce centralizované správy záloh ClusterControl podporuje standardní zálohování mysqldump, zálohování Percona Xtrabackup a Mariabackup poskytované MariaDB. Věříme, že zvolené argumenty příkazového řádku pro příslušné metody jsou optimální pro většinu databázových úloh a vyhovují osvědčeným postupům zálohování MySQL. Zakládáme si na veškeré zpětné vazbě, kterou jsme během let obdrželi při práci s DBA a systémovými administrátory. Za určitých okolností však konfigurace nemusí stačit. Možná jej budete chtít upravit tak, aby vyhovovala vašemu prostředí, pomocí příslušné metody zálohování. V tomto příspěvku vám ukážeme, jak na to.
mysqldump
Chcete-li provést zálohu z uživatelského rozhraní ClusterControl, přejděte do části ClusterControl -> Select Cluster -> Backup. Zde můžete vidět vygenerované zálohy a můžete vytvořit nebo naplánovat novou.
Z uživatelského rozhraní ClusterControl máme několik různých možností, jak provést zálohu. Můžeme vytvořit jeden dumpfile pro každou databázi, povolit částečné zálohování, uložit zálohu na node nebo na ClusterControl server; můžeme zadat adresář a podadresář zálohy, nebo můžeme zálohu automaticky archivovat do cloudu (AWS, Google Cloud nebo Azure) pomocí funkce cloudového nahrávání.
Můžeme také použít kompresi, zašifrovat naši zálohu a určit dobu uchování.
Ve výchozím nastavení nám ClusterControl umožňuje vybrat si mezi 4 různými typy výpisů pro provedení zálohy:
- Schéma a data:Schéma a data databáze
- Pouze schéma:Schéma databáze
- Pouze data:Data databáze
- Pouze MySQL Db:Systémová databáze MySQL
Řekněme, že máme 5 databází a rozhodli jsme se je všechny zálohovat. Zde je to, co ClusterControl provede při provádění zálohy pomocí metody mysqldump (příkazy jsou kvůli čitelnosti oříznuty zpětným lomítkem):
- Schéma a data
$ /usr/bin/mysqldump \ --defaults-file=/etc/my.cnf \ --flush-privileges \ --hex-blob \ --opt \ --single-transaction \ --skip-lock-tables \ --triggers \ --routines \ --events \ --set-gtid-purged=OFF \ --databases mysql proxydemo sakila sbtest mydb \ --ignore-table='mysql.innodb_index_stats' \ --ignore-table='mysql.innodb_table_stats' \ |gzip -6 -c > /root/backups/BACKUP-1/mysqldump_2018-11-06_203010_schemaanddata.sql.gz'.
- Pouze schéma
$ /usr/bin/mysqldump \ --defaults-file=/etc/my.cnf \ --flush-privileges \ --hex-blob \ --opt \ --no-data \ --add-drop-table \ --triggers \ --routines \ --events \ --single-transaction \ --skip-comments \ --skip-lock-tables \ --set-gtid-purged=OFF \ --databases mysql proxydemo sakila sbtest mydb \ |gzip -6 -c > /root/backups/BACKUP-2/mysqldump_2018-11-06_210040_schemaonly.sql.gz'.
- Pouze data
$ /usr/bin/mysqldump \ --defaults-file=/etc/my.cnf \ --flush-privileges \ --hex-blob \ --opt \ --no-create-info \ --single-transaction \ --skip-comments \ --skip-lock-tables \ --skip-triggers \ --skip-add-locks \ --set-gtid-purged=OFF \ --databases mysql proxydemo sakila sbtest mydb \ --ignore-table='mysql.innodb_index_stats' \ --ignore-table='mysql.innodb_table_stats' \ |gzip -6 -c > /root/backups/BACKUP-3/mysqldump_2018-11-06_210445_dataonly.sql.gz'.
- Pouze MySQL DB
$ /usr/bin/mysqldump \ --defaults-file=/etc/my.cnf \ --flush-privileges \ --hex-blob \ --opt \ --single-transaction \ --skip-comments \ --skip-lock-tables \ --skip-add-locks \ --set-gtid-purged=OFF mysql \ |gzip -6 -c > /root/backups/BACKUP-5/mysqldump_2018-11-06_211135_mysqldbonly.sql.gz'.
Pokud náš uzel MySQL generuje binární protokoly, budeme mít parametr master-data=2 zahrnutý ve výše uvedených příkazech a k dispozici 1 extra typ výpisu:
- Kompletní PITR kompatibilní
$ /usr/bin/mysqldump \ --defaults-file=/etc/my.cnf \ --flush-privileges \ --hex-blob \ --opt \ --master-data=1 \ --single-transaction \ --skip-lock-tables \ --skip-lock-tables \ --triggers \ --routines \ --events \ --all-databases \ |gzip -6 -c > /root/backups/BACKUP-6/mysqldump_2018-11-06_211451_complete.sql.gz'.
Z výše uvedených příkazových řádků můžeme vidět, že v každém příkazu mysqldump ClusterControl zahrnuje konfigurační soubor MySQL do svého argumentu --defaults-file. Díky tomu je proces mysqldump schopen číst obsah direktivy mysqldump. Ve výchozím nastavení ClusterControl konfiguruje přihlašovací údaje uživatele zálohy v samostatném souboru v /etc/my.cnf.d/secrets-backup.cnf a max_allowed_packet v my.cnf, podobně jako v následujícím:
$ my.cnf
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
$ secrets-backup.cnf
[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE
Výhodou toho je, že můžeme zahrnout nějaké další možnosti pro mysqldump. Bohužel argument --defaults-file lze zadat pouze jako hlavní argument. Věnujte pozornost tomu, že poslední argumenty příkazového řádku mají přednost před tím, co bylo nakonfigurováno uvnitř my.cnf pod direktivou [mysqldump] na základě pořadí, v jakém se zobrazují. Pokud například do souboru my.cnf přidáme skip-comments=0, zatímco na konci příkazu mysqldump je --skip-comments (nebo --skip-comments=1), první bude ignorován a použije se poslední.
Přesto jej můžeme stále používat jako součást přizpůsobení záloh pomocí jiných možností zálohování mysqldump. Například můžeme vyloučit tabulky, které nechceme zálohovat, pomocí parametru ignore-table (s formátováním „database.table“). Přidejte následující řádky do konfiguračního souboru MySQL:
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1
Po nakonfigurování můžeme jednoduše spustit novou úlohu mysqldump z ClusterControl a mysqldump tyto tabulky přeskočí. Není vyžadován žádný restart MySQL.
Další informace naleznete v dokumentaci mysqldump.
Percona Xtrabackup
ClusterControl spustí Xtrabackup v závislosti na možnostech, které jste zvolili. Může být úplný nebo přírůstkový a z uživatelského rozhraní ClusterControl si můžete vybrat několik proměnných. Zvažte následující:
V tomto kroku můžete vybrat některé proměnné, které jsme zmínili dříve v sekci mysqldump, a poté:
Můžeme specifikovat některé podrobnosti, jako je uzel desync během zálohování, Xtrabackup Parallel Copy Threads a další.
Na základě výše uvedených možností by úplný příkaz Xtrabackup byl:
$ ulimit -n 256000 && LC_ALL=C /usr/bin/innobackupex --defaults-file=/etc/mysql/my.cnf --galera-info --parallel 1 --stream=xbstream --no-timestamp . | gzip -6 - | socat - TCP4:192.168.100.110:9999 ) 2>&1.
První příkaz „ulimit -n 256000“ má zajistit, že Percona Xtrabackup má dostatečná oprávnění pro přístup k obrovskému množství deskriptorů souborů (v případě, že databáze obsahují mnoho tabulek). Všimněte si --defaults-file=/etc/mysql/my.cnf, který je podobný mysqldump, kde innobackupex čte obsah konfigurace MySQL na následujících direktivách a proměnných:
[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]
Pokud byste chtěli upravit možnosti zálohování pro Percona Xtrabackup, můžete je přidat přímo pod direktivou [xtrabackup]. Řekněme například, že chceme, aby Xtrabackup vytiskl pozici binárního protokolu, když je záloha provedena, můžeme přidat něco takového:
[xtrabackup]
user=backupuser
password=[random password]
slave-info=1
Spuštění úlohy xtrabackup pak bude zahrnovat soubor s názvem xtrabackup_slave_info file. Není vyžadován žádný restart MySQL.
Další informace o tom, jak to funguje, najdete v dokumentaci Percona.
Mariabackup
Mariabackup je fork Percona XtraBackup s přidanou podporou pro kompresi MariaDB 10.1 a šifrování dat v klidu. Je součástí MariaDB 10.1.23 a novější.
Metoda zálohování může být plná nebo přírůstková a můžete vybrat stejné proměnné, jaké máte pro Percona XtraBackup, jako je komprese, Xtrabackup Parallel Copy Threads nebo Encryption.
Příkaz Mariabackup by byl:
$ /usr/bin/mariabackup \
--defaults-file=/etc/my.cnf \
--backup \
--galera-info \
--parallel 1 \
--stream=xbstream \
--no-timestamp \
| gzip -6 - > /root/backups/BACKUP-8/backup-full-2018-11-07_015807.xbstream.gz ) 2>&1.
Mariabackup je založen na Percona XtraBackup, takže k provedení zálohy používá stejné informace jako Percona. Ve výchozím nastavení přidá ClusterControl do souboru my.cnf následující řádky:
[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0
A přihlašovací údaje v souboru secrets-backup.cnf:
[xtrabackup]
user=backupuser
password=[random password]
Pokud chcete přidat nějakou proměnnou, můžete ji přidat do sekce [xtrabackup].
Další informace o tom, který parametr přidat, najdete v dokumentaci MariaDB.
V každém případě můžete své zálohy zkontrolovat v části Záloha v uživatelském rozhraní ClusterControl:
Doufáme, že vám to pomůže lépe nakonfigurovat zálohy MySQL – ClusterControl si můžete stáhnout z našeho webu (je to zdarma).