sql >> Databáze >  >> RDS >> Mysql

Jak si přizpůsobit zálohy MySQL a MariaDB pomocí ClusterControl

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).


  1. Existují nějaké bezplatné nástroje pro generování skriptů 'INSERT INTO' v MS SQL Server?

  2. Hibernate nemohl načíst SequenceInformation z databáze

  3. Jak zjistit, co zamyká moje stoly?

  4. Jak vyprázdnit databázi MySQL