Opprette en MySQL-sikkerhetskopi ved hjelp av XtraBackup-verktøyet

Percona XtraBackup er et verktøy for hot database backup MySQL.

Når du oppretter en sikkerhetskopi av data, er ingen tabeller låst, og systemet fortsetter å fungere uten noen begrensninger.

XtraBackup 2.4 kan lage sikkerhetskopier av tabeller UskyldigXtraDB и MyISAM på servere MySQL 5.11, 5.5, 5.6 og 5.7, og også på serveren percona for MySQL с XtraDB.

Å jobbe med MySQL 8.x versjon skal brukes XtraBackup 8.x. Denne artikkelen vil bare snakke om XtraBackup 2.4.

Den største fordelen XtraBackup er at dette verktøyet egner seg både for å lage sikkerhetskopier av høyt belastede servere og for systemer med et lavt antall transaksjoner.

Hvis den totale størrelsen på MySQL-databasene dine er betydelig (titalls gigabyte), er standardverktøyet mysqldump vil ikke tillate deg å raskt lage en sikkerhetskopi, og gjenoppretting av dumpen vil ta mye tid.

Installasjon

Installasjon XtraBackup fra depotet apt Percona.

Kjør følgende kommandoer sekvensielt:

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. Etter installasjonen, kjør kommandoen xtrabackup -v. Siden er det viktig å sørge for at verktøyet fungerer riktig på serveren. Som et resultat vil noe sånt som dette vises på skjermen:

xtrabackup: gjenkjente 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 versjon 2.4.20 basert på MySQL-server 5.7.26 Linux (x8664) (revisjons-id: c8b4056)

Opprette en MySQL-sikkerhetskopi ved hjelp av XtraBackup-verktøyet

Tilgangsrettigheter, tillatelser og privilegier 

XtraBackup skal kunne:

  • Koble til MySQL-serveren din.

  • Har tilgangsrettigheter til katalogen datadir

  • Når du oppretter en sikkerhetskopi, ha skriverettigheter til den angitte parameteren mål-dir katalog.

Hva er datadir?

datadir er katalogen der databaseserveren MySQL lagrer data. Alle databaser, alle tabeller er der. På de fleste Linux-distribusjoner er standardkatalogen / var / lib / mysql.

Hva er target-dir-katalogen?

mål-dir - Dette er katalogen der sikkerhetskopien vil bli lagret.

Databasebrukeren trenger følgende tilgangsrettigheter til tabellene og databasene som skal sikkerhetskopieres:

  • LASTE PÅ OG LÅS TABELLER

  • REPLIKASJONSKLIENT

  • LAG BORDPLATE

  • PROSESS

  • SUPER

  • SKAPE

  • INSERT

  • VELG

Konfigurasjon 

Konfigurasjon XtraBackup gjort ved å bruke alternativer som oppfører seg på samme måte som standard MySQL-alternativer.

Hva betyr det?

Konfigurasjonsparametere kan spesifiseres enten på kommandolinjen eller i DBMS-konfigurasjonsfilen, for eksempel i /etc/my.cnf.

XtraBackup-verktøyet leser partisjoner etter lansering [Mysqld] и [xtrabackup] fra MySQL-konfigurasjonsfiler. Dette gjøres slik at verktøyet kan bruke innstillingene til DBMS uten å måtte spesifisere parametrene manuelt under hver sikkerhetskopiering.

For eksempel verdien datadir og noen parametere Uskyldig XtraBackup hentes fra konfigurasjonen av DBMS.

Hvis for at XtraBackup skal fungere, vil du overstyre parameterne som er i seksjonen [Mysqld], så er det bare å spesifisere dem i konfigurasjonsfilen i seksjonen [xtrabackup]. Siden de vil bli lest senere, vil deres prioritet være høyere.

Du trenger ikke å legge til noen parametere min.cnf. Alle nødvendige parametere kan spesifiseres på kommandolinjen. Vanligvis det eneste som praktisk kan plasseres i seksjonen [xtrabackup] din min.cnf er en parameter target_dir, som som standard spesifiserer katalogen der sikkerhetskopier skal plasseres. Men dette er valgfritt.

Et eksempel på å spesifisere banen til katalogen med en sikkerhetskopi i min.cnf:

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

Sikkerhetskopieringsskript

Du kan bruke følgende skript for å lage en sikkerhetskopi:

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

Hva skjer under kjøring av skript?

Først av alt sletter (sletter) vi katalogen der vi skal lagre sikkerhetskopi:

rm -rf /mysql/backup.

Deretter bruker du verktøyet XtraBackup lag en sikkerhetskopi og lagre den i /mysql/backup/:

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

Tidligere har vi opprettet en bruker i MySQL xtrabackup med de nødvendige rettighetene. Ved å bruke parameteren target-dir vi spesifiserer katalogen der sikkerhetskopien skal lagres.

Et viktig poeng!

Legg merke til skriptlinjen:

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

Katalogdata /mysql/backup er ikke konsistente før de er kokt. 

Faktum er at endringer kan skje mens du kopierer filer. Operasjon xtrabackup --prepare --target-dir=/mysql/backup gjør sikkerhetskopieringsdata perfekt konsistente over tid.

Du kan utføre dataforberedelsen på hvilken som helst maskin. Det er ikke nødvendig å gjøre dette på serveren der kilde-DBMS er plassert. Du kan kopiere sikkerhetskopien til målserveren og klargjøre den der.

Det siste vi gjør er å lage et arkiv der vi legger sikkerhetskopien vår:

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

Gjenoppretter en sikkerhetskopi 

Før du kan gjenopprette en sikkerhetskopi til målserveren, må dataene gjennom en forberedelsesfase. Se ovenfor for hvordan du gjør dette.

Datagjenopprettingsprosessen er veldig enkel. Du må trekke ut sikkerhetskopien fra arkivet og erstatte dataene i datadir.

Hvordan erstatte data i datadir?

La oss vurdere to alternativer.

Alternativ 1

Bruk verktøyet XtraBackup. Du må spesifisere et alternativ --kopi tilbake

Kommandoen nedenfor vil overføre sikkerhetskopien til datadir målserver:

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

Alternativ 2

Du kan gjøre det annerledes, uten verktøyet XtraBackup.

Alt du trenger å gjøre er å kopiere sikkerhetskopien til datadir. Du kan gjøre dette med cp eller rsync.

Det er viktig å forstå at prosedyren for å gjenopprette en sikkerhetskopi koker ned til bare å erstatte innholdet i katalogen datadir.

Før du begynner å gjenopprette en sikkerhetskopi på målserveren, må du:

  • Stopp MySQL-serveren.

  • Tøm mappen datadir eller flytte innholdet til et annet sted. Katalog datadir må være tom.

Etter å ha fullført dataoverføringen til datadir MySQL-serveren kan startes.

Materialer som brukes

Offisiell dokumentasjon percona XtraBackup.

Kilde: www.habr.com

Legg til en kommentar