Oprettelse af en MySQL-sikkerhedskopi ved hjælp af XtraBackup-værktøjet

Percona XtraBackup er et værktøj til hot database backups MySQL.

Når du opretter en sikkerhedskopi af data, er ingen tabeller låst, og dit system fortsætter med at fungere uden nogen begrænsninger.

XtraBackup 2.4 kan lave sikkerhedskopier af tabeller InnoDBXtraDB и MyISAM på servere MySQL 5.11, 5.5, 5.6 og 5.7, og også på serveren percona for MySQL с XtraDB.

At arbejde med MySQL 8.x version skal bruges XtraBackup 8.x. Denne artikel vil kun tale om XtraBackup 2.4.

Den største fordel XtraBackup er, at dette værktøj er velegnet både til at lave sikkerhedskopier af højt belastede servere og til systemer med et lavt antal transaktioner.

Hvis den samlede størrelse af dine MySQL-databaser er betydelig (tivis af gigabyte), så er standardværktøjet mysqldump vil ikke tillade dig hurtigt at oprette en sikkerhedskopi, og gendannelse af dumpet vil tage meget tid.

Installation

Installation XtraBackup fra depotet apt Percona.

Kør følgende kommandoer sekventielt:

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. Kør kommandoen efter installationen xtrabackup -v. Da er det vigtigt at sikre sig, at hjælpeprogrammet fungerer korrekt på serveren. Som et resultat vil noget som dette blive vist på skærmen:

xtrabackup: genkendte serverargumenter: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup version 2.4.20 baseret på MySQL-server 5.7.26 Linux (x8664) (revisions-id: c8b4056)

Oprettelse af en MySQL-sikkerhedskopi ved hjælp af XtraBackup-værktøjet

Adgangsrettigheder, tilladelser og privilegier 

XtraBackup skal kunne:

  • Opret forbindelse til din MySQL-server.

  • Har adgangsrettigheder til biblioteket datadir

  • Når du opretter en sikkerhedskopi, skal du have skriverettigheder til den angivne parameter mål-dir katalog.

Hvad er datadir?

datadir er den mappe, hvor databaseserveren MySQL gemmer data. Alle databaser, alle tabeller er der. På de fleste Linux-distributioner er standardmappen / var / lib / mysql.

Hvad er target-dir mappe?

mål-dir - Dette er den mappe, hvor sikkerhedskopien vil blive gemt.

Databasebrugeren skal have følgende adgangsrettigheder til de tabeller og databaser, der skal sikkerhedskopieres:

  • GENLÆS OG LÅS BORDE

  • REPLIKATIONSKLIENT

  • OPRET BORDPLADS

  • PROCES

  • SUPER

  • SKAB

  • INSERT

  • SELECT

Konfiguration 

Konfiguration XtraBackup gjort ved at bruge muligheder, der opfører sig på samme måde som standard MySQL-indstillinger.

Hvad betyder dette?

Konfigurationsparametre kan angives enten på kommandolinjen eller i DBMS-konfigurationsfilen, for eksempel i /etc/my.cnf.

XtraBackup-værktøjet læser partitioner efter lancering [Mysqld] и [xtrabackup] fra MySQL-konfigurationsfiler. Dette gøres for at hjælpeprogrammet kan bruge indstillingerne i dit DBMS uden at skulle angive parametrene manuelt under hver backup.

For eksempel værdien datadir og nogle parametre InnoDB Vi får XtraBackup fra konfigurationen af ​​dit DBMS.

Hvis XtraBackup skal virke, vil du tilsidesætte de parametre, der er i afsnittet [Mysqld], så skal du blot angive dem i konfigurationsfilen i afsnittet [xtrabackup]. Da de vil blive læst senere, vil deres prioritet være højere.

Du behøver ikke tilføje nogen parametre til min.cnf. Alle nødvendige parametre kan angives på kommandolinjen. Normalt det eneste, der bekvemt kan placeres i sektionen [xtrabackup] din hans min.cnf er en parameter target_dir, som som standard angiver den mappe, hvor sikkerhedskopier vil blive placeret. Men dette er valgfrit.

Et eksempel på at angive stien til mappen med en sikkerhedskopi i min.cnf:

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

Backup script

Du kan bruge følgende script til at oprette en sikkerhedskopi:

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

Hvad sker der under udførelse af script?

Først og fremmest rydder (sletter) vi den mappe, hvori vi gemmer sikkerhedskopien:

rm -rf /mysql/backup.

Brug derefter hjælpeprogrammet XtraBackup lav en sikkerhedskopi og gem den i /mysql/backup/:

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

Tidligere oprettede vi en bruger i MySQL xtrabackup med de nødvendige privilegier. Brug af parameteren target-dir vi angiver den mappe, hvor sikkerhedskopien skal gemmes.

Et vigtigt punkt!

Bemærk scriptlinjen:

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

Katalog data /mysql/backup er ikke konsistente, før de er kogte. 

Faktum er, at ændringer kan forekomme under kopiering af filer. Operation xtrabackup --prepare --target-dir=/mysql/backup gør backup-data perfekt konsistente over tid.

Du kan udføre dataforberedelsen på enhver maskine. Det er ikke nødvendigt at gøre dette på serveren, hvor kilde-DBMS er placeret. Du kan kopiere sikkerhedskopien til målserveren og forberede den der.

Det sidste, vi gør, er at oprette et arkiv, hvori vi placerer vores backup:

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

Gendannelse af en sikkerhedskopi 

Før du kan gendanne en sikkerhedskopi til målserveren, skal dataene gennemgå en forberedelsesfase. Se ovenfor for, hvordan du gør dette.

Datagendannelsesprocessen er meget enkel. Du skal udtrække sikkerhedskopien fra arkivet og erstatte dataene i datadir.

Hvordan erstatter man data i datadir?

Lad os overveje to muligheder.

Mulighed 1

Brug værktøjet XtraBackup. Du skal angive en mulighed --kopi tilbage

Kommandoen nedenfor overfører sikkerhedskopien til datadir målserver:

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

Mulighed 2

Du kan gøre det anderledes, undvær værktøjet XtraBackup.

Alt du skal gøre er at kopiere sikkerhedskopien til datadir. Du kan gøre dette med cp eller rsync.

Det er vigtigt at forstå, at proceduren for at gendanne en sikkerhedskopi går ud på blot at erstatte indholdet af mappen datadir.

Før du begynder at gendanne en sikkerhedskopi på målserveren, skal du:

  • Stop MySQL-serveren.

  • Ryd mappe datadir eller flyt indholdet til et andet sted. Katalog datadir skal være tom.

Efter at have gennemført dataoverførslen til datadir MySQL server kan startes.

Anvendte materialer

Officiel dokumentation percona XtraBackup.

Kilde: www.habr.com

Tilføj en kommentar