Skapa en backup av MySQL med hjälp av verktyget XtraBackup

Percona XtraBackup är ett verktyg för kall säkerhetskopiering av databaser MySQL.

Under processen för att skapa en säkerhetskopia blockeras inte tabellerna, och ditt system fortsätter att fungera utan några begränsningar.

XtraBackup 2.4 kan skapa säkerhetskopior av tabeller InnoDB, XtraDB och MyISAM på servrar MySQL 5.11, 5.5, 5.6 och 5.7, samt på servern Percona för MySQL med XtraDB.

För att arbeta med MySQL 8.x bör versionen XtraBackup 8.x. Den här artikeln handlar endast om XtraBackup 2.4.

Den största fördelen XtraBackup är att detta verktyg passar både för att skapa säkerhetskopior av högbelastade servrar, såväl som för system med få transaktioner.

Om den totala storleken på dina MySQL-databaser är betydande (tiotals gigabyte), kommer standardverktyget mysqldump inte att möjliggöra snabb säkerhetskopiering, och återställning av dumpen kommer att ta mycket tid.

Installation

Installation XtraBackup från arkivet apt Percona.

Kör följande kommandon i följd:

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. Efter installationen kör kommandot xtrabackup -v. Det är viktigt att säkerställa att verktyget fungerar korrekt på servern. Resultatet på skärmen ska likna detta:

xtrabackup: erkänna serverargument: — 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 baserat på MySQL-server 5.7.26 Linux (x8664) (revisions-id: c8b4056)

Skapa en backup av MySQL med hjälp av verktyget XtraBackup

Behörigheter, rättigheter och privilegier 

XtraBackup måste ha möjlighet att:

  • Ansluta till din MySQL-server.

  • Ha behörighet till katalogen datadir. 

  • Under säkerhetskopieringsprocessen ha skrivbehörighet till den angivna katalogen via parameter target-dir katalogen.

Vad är datadir?

datadir — det är katalogen där databasservern MySQL lagrar data. Alla databaser och alla tabeller finns där. I de flesta Linux-distributioner är denna katalog som standard /var/lib/mysql.

Vad är target-dir katalogen?

target-dir — det är katalogen där säkerhetskopian kommer att sparas.

Databas användaren behöver följande behörigheter till tabeller och databaser som ska säkerhetskopieras:

  • RELOAD och LOCK TABLES

  • REPLICATION CLIENT

  • CREATE TABLESPACE

  • PROCESS

  • SUPER

  • Tänk på förkortningar.

  • INSÄTT

  • VÄLJ

Konfiguration 

Konfiguration XtraBackup utförs med hjälp av alternativ, som fungerar på samma sätt som de standard MySQL-parametrarna.

Vad betyder det?

Konfigurationsparametrar kan anges antingen i kommandoraden eller i konfigurationsfilen för DBMS, till exempel i /etc/my.cnf.

Verktyget XtraBackup läser efter start avsnitt [mysqld] och [xtrabackup] från MySQL konfigurationsfiler. Detta görs så att verktyget kan använda inställningarna för ditt DBMS utan att behöva ange parametrar manuellt vid varje säkerhetskopiering.

Till exempel värdet datadir och vissa parametrar InnoDB XtraBackup får vi från konfigurationen av ditt DBMS.

Om du vill åsidosätta parametrar för XtraBackup som ligger i avsnittet [mysqld], så ange bara dem i konfigurationsfilen i avsnittet [xtrabackup]. Eftersom de kommer att läsas senare, kommer deras prioritet att vara högre.

Du kan välja att inte lägga till några parametrar i my.cnf. Alla nödvändiga parametrar kan anges i kommandoraden. Vanligtvis är det enda som kan vara praktiskt att placera i avsnittet [xtrabackup] din my.cnf — är parametern target_dir, som som standard definierar katalogen där säkerhetskopiorna kommer att placeras. Men detta är inte obligatoriskt.

Exempel på hur man anger sökvägen till säkerhetskopieringskatalogen i my.cnf:

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

Säkerhetskopieringsskript

För att skapa en säkerhetskopiering kan man använda följande skript:

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

Vad händer under körningen av skriptet?

Först rensar vi (tar bort) katalogen där vi ska spara säkerhetskopian:

rm -rf /mysql/backup.

Sedan skapar vi med hjälp av verktyget XtraBackup en säkerhetskopiering och sparar den i /mysql/backup/:

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

Tidigare har vi i MySQL skapat användaren xtrabackup med nödvändiga privilegier. Med hjälp av parametern target-dir anger vi katalogen där säkerhetskopian ska sparas.

En viktig punkt!

Observera skrivraden:

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

Data i katalogen /mysql/backup är inte konsekvent förrän de har förberetts. 

Grejen är att det kan ha skett förändringar under filkopieringen. Operationen xtrabackup --prepare --target-dir=/mysql/backup gör säkerhetskopieringsdata perfekt tidsenliga.

Operationen för att förbereda data kan utföras på vilken maskin som helst. Det är inte nödvändigt att göra det på servern där den ursprungliga DBMS finns. Du kan kopiera säkerhetskopian till målnod och förbereda den där.

Det sista vi gör är att skapa ett arkiv där vi lägger vår säkerhetskopiering:

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

Återställning av säkerhetskopia 

Innan du börjar återställa säkerhetskopian på måltjänstservern måste data genomgå en förberedelseprocess. Hur man gör detta se ovan.

Processen för dataåterställning är mycket enkel. Du behöver extrahera säkerhetskopian från arkivet och ersätta data i datadir.

Hur man ersätter data i datadir?

Låt oss överväga två alternativ.

Alternativ 1

Använda verktyget XtraBackup. Du måste ange alternativet —copy-back. 

Kommandot nedan kommer att flytta säkerhetskopian till datadir måltjänstservern:

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

Alternativ 2

Det går också att göra på ett annat sätt, utan verktyget XtraBackup.

Allt du behöver göra är att kopiera säkerhetskopian till datadir. Du kan göra detta med hjälp av cp eller rsync.

Det är viktigt att förstå att processen för att återställa en säkerhetskopia består endast av att ersätta innehållet i katalogen datadir.

Innan du börjar återställningen av säkerhetskopian på måltjänstservern måste du:

  • Stoppa MySQL-servern.

  • Rensa mappen datadir eller flytta dess innehåll till en annan plats. Katalogen datadir måste vara tom.

När överföringen av data till datadir kan MySQL-servern startas.

Använda material

Officiell dokumentation Percona XtraBackup.

Källa: habr.com

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster