De gecentraliseerde back-upbeheerfunctie van ClusterControl ondersteunt de standaard mysqldump, Percona Xtrabackup-back-up en Mariabackup van MariaDB. We zijn van mening dat de gekozen opdrachtregelargumenten voor de respectieve methoden optimaal zijn voor de meeste databaseworkloads en voldoen aan de aanbevolen procedures voor MySQL-back-up. We baseren ons op alle feedback die we in de loop der jaren hebben ontvangen bij het werken met DBA's en sysadmins. In sommige omstandigheden is de configuratie echter mogelijk niet voldoende. Misschien wilt u het nog steeds aanpassen aan uw omgeving, met behulp van de respectieve back-upmethode. In dit bericht laten we je zien hoe je dit doet.
mysqldump
Om een back-up uit te voeren vanuit de gebruikersinterface van ClusterControl, gaat u naar het gedeelte ClusterControl -> Cluster selecteren -> Back-up. Hier kunt u de gegenereerde back-ups zien en kunt u een nieuwe maken of plannen.
Vanuit de gebruikersinterface van ClusterControl hebben we een aantal verschillende opties om de back-up te maken. We kunnen voor elke database één dumpfile maken, gedeeltelijke back-up inschakelen, de back-up opslaan op de node of op de ClusterControl-server; we kunnen de back-upmap en submap specificeren, of we kunnen de back-up automatisch archiveren naar de cloud (AWS, Google Cloud of Azure) met behulp van de cloud-uploadfunctie.
We kunnen ook compressie gebruiken, onze back-up versleutelen en de bewaarperiode specificeren.
ClusterControl stelt ons standaard in staat om te kiezen tussen 4 verschillende dumptypes om de back-up uit te voeren:
- Schema en gegevens:databaseschema en gegevens
- Alleen Schema:Databaseschema
- Alleen gegevens:databasegegevens
- Alleen MySQL Db:MySQL-systeemdatabase
Laten we zeggen dat we 5 databases hebben en dat we ervoor hebben gekozen om ze allemaal te back-uppen. Dit is wat ClusterControl zal uitvoeren bij het uitvoeren van de back-up met behulp van de mysqldump-methode (commando's worden bijgesneden met backslash voor leesbaarheid):
- Schema en gegevens
$ /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'.
- Alleen Schema
$ /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'.
- Alleen gegevens
$ /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'.
- Alleen 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'.
Als ons MySQL-knooppunt binaire logboeken genereert, hebben we de parameter master-data=2 opgenomen in de bovenstaande opdrachten en 1 extra dumptype beschikbaar:
- Compleet PITR-compatibel
$ /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'.
Uit de bovenstaande opdrachtregels kunnen we zien dat ClusterControl bij elke mysqldump-opdracht het MySQL-configuratiebestand opneemt in het argument --defaults-file. Hierdoor kan het mysqldump-proces de inhoud van de mysqldump-richtlijn lezen. Standaard configureert ClusterControl de gebruikersreferenties voor back-ups in een apart bestand in /etc/my.cnf.d/secrets-backup.cnf en het max_allowed_packet in my.cnf, vergelijkbaar met het volgende:
$ mijn.cnf
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
$ secrets-backup.cnf
[mysqldump]
user=backupuser
password=ETgAG5VnpvuyXniE
Het voordeel hiervan is dat we wat extra opties voor mysqldump kunnen toevoegen. Helaas kan het argument --defaults-file alleen worden opgegeven als het belangrijkste argument. Let erop dat de laatstgenoemde opdrachtregelargumenten voorrang hebben op wat er is geconfigureerd in my.cnf onder de [mysqldump]-richtlijn op basis van de volgorde waarin ze verschijnen. Als we bijvoorbeeld skip-comments=0 toevoegen aan my.cnf, terwijl aan het einde van het mysqldump-commando een --skip-comments (of --skip-comments=1) staat, wordt de eerste genegeerd en de laatste zal worden gebruikt.
Desalniettemin kunnen we het nog steeds gebruiken als onderdeel van onze back-upaanpassing door andere mysqldump-back-upopties te gebruiken. We kunnen bijvoorbeeld tabellen uitsluiten waarvan we geen back-up willen maken door de parameter negeer-tabel te gebruiken (met opmaak "database.table"). Voeg de volgende regels toe aan het MySQL-configuratiebestand:
[mysqldump]
max_allowed_packet = 512M
# default_character_set = utf8
ignore-table=sbtest.sbtest9
ignore-table=sbtest.sbtest10
ignore-table=sbtest.sbtest1
Eenmaal geconfigureerd, kunnen we gewoon een nieuwe mysqldump-taak activeren vanuit ClusterControl en we zullen die tabellen laten overslaan door mysqldump. Opnieuw opstarten van MySQL is niet vereist.
U kunt de mysqldump-documentatie raadplegen voor meer informatie.
Percona Xtrabackup
ClusterControl voert de Xtrabackup uit, afhankelijk van de door u gekozen opties. Het kan volledig of incrementeel zijn en u kunt verschillende variabelen kiezen in de gebruikersinterface van ClusterControl. Overweeg het volgende:
In deze stap kun je een aantal variabelen kiezen die we eerder in de mysqldump-sectie hebben genoemd, en dan:
We kunnen enkele details specificeren, zoals desync-knooppunt tijdens back-up, Xtrabackup Parallel Copy Threads en meer.
Op basis van de bovenstaande opties zou het volledige Xtrabackup-commando zijn:
$ 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.
Het eerste commando “ulimit -n 256000” is om ervoor te zorgen dat Percona Xtrabackup voldoende rechten heeft om toegang te krijgen tot een groot aantal bestandsdescriptors (voor het geval de databases veel tabellen bevatten). Let op de --defaults-file=/etc/mysql/my.cnf, die vergelijkbaar is met mysqldump, waar innobackupex de inhoud van de MySQL-configuratie leest op de volgende richtlijnen en variabelen:
[mysqld]
datadir=[physical path to MySQL data directory]
tmpdir=[path to temporary directory]
[xtrabackup]
user=backupuser
password=[random password]
Als u de back-upopties voor Percona Xtrabackup wilt aanpassen, kunt u deze direct toevoegen onder de [xtrabackup]-richtlijn. Laten we bijvoorbeeld zeggen dat we willen dat Xtrabackup de binaire logpositie afdrukt wanneer de back-up wordt gemaakt, we kunnen zoiets als dit toevoegen:
[xtrabackup]
user=backupuser
password=[random password]
slave-info=1
Het activeren van de xtrabackup-taak bevat dan een bestand met de naam xtrabackup_slave_info file. Opnieuw opstarten van MySQL is niet vereist.
U kunt de Percona-documentatie raadplegen voor meer informatie over hoe het werkt.
Mariaback-up
Mariabackup is een afsplitsing van Percona XtraBackup met toegevoegde ondersteuning voor MariaDB 10.1-compressie en data-at-rest-codering. Het wordt meegeleverd met MariaDB 10.1.23 en later.
De back-upmethode kan volledig of incrementeel zijn en u kunt dezelfde variabelen selecteren als voor Percona XtraBackup, zoals compressie, Xtrabackup Parallel Copy Threads of Encryption.
Het Mariabackup-commando zou zijn:
$ /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 is gebaseerd op Percona XtraBackup en gebruikt dus dezelfde informatie als Percona om de back-up uit te voeren. ClusterControl voegt standaard de volgende regels toe aan het bestand my.cnf:
[xtrabackup]
databases-exclude=lost+found
# ssl_mode = DISABLED
ssl = 0
En de inloggegevens in het bestand secrets-backup.cnf:
[xtrabackup]
user=backupuser
password=[random password]
Als u een variabele wilt toevoegen, kunt u deze toevoegen aan de sectie [xtrabackup].
U kunt de MariaDB-documentatie raadplegen voor meer informatie over welke parameter u moet toevoegen.
In elk geval kunt u uw back-ups controleren in het gedeelte Back-up op de gebruikersinterface van ClusterControl:
We hopen dat dit u helpt om uw MySQL-back-ups beter te configureren - u kunt ClusterControl downloaden van onze website (het is gratis).