Een back-up maken van MySQL met behulp van de XtraBackup-tool

Percona XtraBackup is een tool voor hot backup van databases MySQL.

Tijdens het maken van een gegevensback-up vindt er geen blokkering van tabellen plaats, uw systeem blijft zonder enige beperkingen functioneren.

XtraBackup 2.4 kan back-ups van tabellen maken InnoDB, XtraDB en MyISAM op servers MySQL 5.11, 5.5, 5.6 en 5.7, evenals op de server Percona voor MySQL met XtraDB.

Voor gebruik met MySQL 8.x moet versie XtraBackup 8.x gebruiken. In dit artikel bespreken we alleen XtraBackup 2.4.

Het belangrijkste voordeel XtraBackup is geschikt voor zowel het maken van back-ups van hoogbelaste servers, als voor systemen met een laag aantal transacties.

Als de totale grootte van uw MySQL-databases aanzienlijk is (tientallen gigabytes), dan laat de standaardtool mysqldump niet snel een back-up maken en zal het herstellen van de dump veel tijd kosten.

Installatie

Installatie XtraBackup uit de repository apt Percona.

Voer achtereenvolgens de volgende commando's uit:

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. Na installatie voert u de opdracht uit xtrabackup -v. Het is belangrijk om te bevestigen dat de tool correct werkt op de server. Het resultaat op het scherm zal er ongeveer als volgt uitzien:

xtrabackup: herkende serverargumenten: — datadir=/var/lib/mysql — tmpdir=/tmp — server-id=1 — logbin=/var/log/mysql/mysql-bin.log — innodbbufferpoolsize=16384M — innodbfilepertable=1 — innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup versie 2.4.20 gebaseerd op MySQL server 5.7.26 Linux (x8664) (herziening id: c8b4056)

Een back-up maken van MySQL met behulp van de XtraBackup-tool

Toegangsrechten, permissies en privileges 

XtraBackup moet in staat zijn om:

  • Verbinden met uw MySQL-server.

  • Toegang te hebben tot de directory datadir. 

  • Tijdens het maken van een back-up, schrijfprivileges hebben voor de opgeven via de parameter target-dir directory.

Wat is datadir?

datadir is de directory waarin de database server MySQL gegevens opslaat. Alle databases, alle tabellen bevinden zich daar. In de meeste Linux-distributies is deze directory standaard /var/lib/mysql.

Wat is target-dir directory?

target-dir is de directory waarin de back-up zal worden opgeslagen.

De databasegebruiker moet de volgende toegangsrechten hebben voor de tabellen en databases die geback-upt moeten worden:

  • RELOAD en LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • PROCESS

  • SUPER

  • CREATE

  • INSERT

  • SELECT

Configuratie 

Configuratie XtraBackup wordt uitgevoerd met opties die zich gedragen zoals de standaardparameters van MySQL.

Wat betekent dat?

Configuratieparameters kunnen worden opgegeven in de opdrachtregel of in het configuratiebestand van de DBMS, bijvoorbeeld in /etc/my.cnf.

De XtraBackup-tool leest na het starten de secties [mysqld] en [xtrabackup] uit de configuratiebestanden van MySQL. Dit gebeurt zodat de tool de instellingen van uw DBMS kan gebruiken zonder dat u de parameters elke keer handmatig hoeft op te geven tijdens een back-up.

Bijvoorbeeld, de waarde datadir en enkele parameters InnoDB XtraBackup verkrijgen we uit de configuratie van uw DBMS.

Als u de parameters voor XtraBackup wilt overschrijven die zich in de sectie bevinden [mysqld], geef deze dan eenvoudig op in het configuratiebestand in de sectie [xtrabackup]. Omdat deze later worden gelezen, hebben ze een hogere prioriteit.

U hoeft mogelijk geen parameters toe te voegen aan my.cnf. Alle benodigde parameters kunnen in de opdrachtregel worden opgegeven. Gewoonlijk is het enige wat handig kan zijn om in de sectie [xtrabackup] uw my.cnf te plaatsen, is de parameter target_dir, die standaard de map definieert waarin de back-ups worden opgeslagen. Maar dit is niet verplicht.

Voorbeeld van het opgeven van het pad naar de back-upmap in my.cnf:

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

Back-upscript

Voor het maken van een back-up kunt u het volgende script gebruiken:

#!/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

Wat gebeurt er tijdens het uitvoeren van het script?

Allereerst verwijderen we de map waarin we de back-up zullen opslaan:

rm -rf /mysql/backup.

Vervolgens maken we met de tool XtraBackup een back-up en slaan deze op in /mysql/backup/:

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

Vooraf hebben we in MySQL een gebruiker gemaakt xtrabackup met de vereiste bevoegdheden. Met de parameter target-dir geven we de map op waar de back-up moet worden opgeslagen.

Belangrijk punt!

Let op de regel in het script:

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

De gegevens in de map /mysql/backup zijn niet consistent totdat ze zijn voorbereid. 

Dit komt omdat er tijdens het kopiëren van bestanden wijzigingen hebben kunnen plaatsvinden. De operatie xtrabackup --prepare --target-dir=/mysql/backup zorgt ervoor dat de back-upgegevens perfect tijdsynchroniseerd zijn.

De operatie om de gegevens voor te bereiden kan op elke machine worden uitgevoerd. Het is niet nodig dit op de server te doen waar de oorspronkelijke DBMS zich bevindt. U kunt de back-up naar de doelserver kopiëren en deze daar voorbereiden.

Het laatste wat we doen, is een archief maken waarin we onze back-up plaatsen:

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

Herstellen van de back-up 

Voordat we beginnen met het herstellen van de back-up op de doelserver, moeten de gegevens een voorbereidende fase doorlopen. Hoe dit te doen, zie hierboven.

Het proces van gegevensherstel is heel eenvoudig. U moet de back-up uit het archief extraheren en de gegevens vervangen in datadir.

Hoe de gegevens in datadir vervangen?

Laten we twee opties bekijken.

Optie 1

Gebruik de utility XtraBackup. U moet de optie opgeven --copy-back. 

De onderstaande opdracht verplaatst de back-up naar datadir de doelserver:

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

Optie 2

Dit kan ook anders, zonder de utility. XtraBackup.

Alles wat u hoeft te doen, is de back-up kopiëren naar datadir. U kunt dit doen met cp of rsync.

Het is belangrijk te begrijpen dat de procedure voor het herstellen van de back-up simpelweg inhoudt dat de inhoud van de directory wordt vervangen. datadir.

Voordat u begint met het herstellen van de back-up op de doelserver, moet u:

  • De MySQL-server stoppen.

  • De map leegmaken datadir of de inhoud naar een andere locatie verplaatsen. De directory datadir moet absoluut leeg zijn.

Na het voltooien van de gegevensoverdracht in datadir kan de MySQL-server worden gestart.

Gebruikte materialen

De officiële documentatie Percona XtraBackup.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster