Percona XtraBackup er et værktøj til hot backup af databaser MySQL.
Under backup-processen blokeres der ikke for tabellerne, og dit system fortsætter med at fungere uden begrænsninger.
XtraBackup 2.4 kan tage backup af tabeller InnoDB, XtraDB og MyISAM på servere MySQL 5.11, 5.5, 5.6 og 5.7, samt på serveren Percona for MySQL med XtraDB.
Til at arbejde med MySQL 8.x bør du bruge versionen XtraBackup 8.x. I denne artikel vil vi kun tale om XtraBackup 2.4.
Den vigtigste fordel XtraBackup er velegnet til både at tage backup af højt belastede servere, såvel som systemer med færre transaktioner.
Hvis den samlede størrelse af dine MySQL-databaser er betydelig (i titusinder af gigabyte), vil det standardværktøj mysqldump ikke tillade en hurtig backup, og gendannelse af dumpet vil tage meget lang tid.
Installation
Installation XtraBackup fra repository apt Percona.
Udfør følgende kommandoer i rækkefølge:
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-242. Efter installationen skal du køre kommandoen xtrabackup -v. Det er vigtigt at sikre, at værktøjet fungerer korrekt på serveren. Resultatet vil vise noget lignende 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)

Adgangsrettigheder, tilladelser og privilegier
XtraBackup skal have mulighed for:
At oprette forbindelse til din MySQL-server.
At have adgang til mappen datadir.
At have skriveadgang til den angivne mappe via parameteren target-dir klassen.
Hvad er datadir?
datadir — det er mappen, hvor databaseserveren MySQL opbevarer data. Alle databaser og tabeller findes der. I de fleste Linux-distributioner er denne mappe som standard /var/lib/mysql.
Hvad er target-dir mappen?
target-dir — det er mappen, hvor backupen vil blive gemt.
Databasens bruger har brug for følgende adgangsrettigheder til tabeller og databaser, der skal tages backup af:
RELOAD og LOCK TABLES
REPLICATION CLIENT
CREATE TABLESPACE
PROCESS
SUPER
CREATE
INSERT
SELECT
Konfiguration
Konfiguration XtraBackup udføres med hjælp af indstillinger, der fungerer som de standard MySQL-parametre.
Hvad betyder det?
Konfigurationsparametre kan angives enten i kommandolinjen eller i konfigurationsfilen for databasehåndteringssystemet, for eksempel i /etc/my.cnf.
XtraBackup-værktøjet læser sektionerne [mysqld] og [xtrabackup] fra MySQL-konfigurationsfilerne. Dette gøres, så værktøjet kan bruge indstillingerne fra dit databasehåndteringssystem uden at skulle angive parametre manuelt ved hver sikkerhedskopiering.
For eksempel værdien datadir og nogle parametre InnoDB XtraBackup får fra konfigurationen af dit databasehåndteringssystem.
Hvis du vil overstyre parametre til XtraBackup, som findes i sektionen [mysqld], skal du blot angive dem i konfigurationsfilen under sektionen [xtrabackup]. Da de vil blive læst senere, vil deres prioritet være højere.
Du behøver ikke at tilføje nogen parametre til my.cnf. Alle nødvendige parametre kan angives i kommandolinjen. Normalt er det eneste, som kan være praktisk at placere i sektionen [xtrabackup] af dit my.cnf — det parametre target_dir, som som standard angiver den mappe, hvori sikkerhedskopierne vil blive gemt. Men det er ikke obligatorisk.
Eksempel på angivelse af stien til mappen med sikkerhedskopier i my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/Sikkerhedskopieringsscript
For at oprette en sikkerhedskopi kan følgende script anvendes:
#!/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/backupHvad sker der under udførelsen af scriptet?
Først renser vi (sletter) mappen, hvortil vi skal gemme sikkerhedskopien:
rm -rf /mysql/backup.
Derefter bruger vi værktøjet XtraBackup til at oprette en sikkerhedskopi og gemme den i /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backupForud for dette oprettede vi i MySQL brugeren xtrabackup med de nødvendige rettigheder. Ved hjælp af parameteren target-dir angiver vi mappen, hvori sikkerhedskopien skal gemmes.
Vigtig pointe!
Bemærk linjen i scriptet:
xtrabackup --prepare --target-dir=/mysql/backup
Dataene i mappen /mysql/backup er ikke konsistente, før de er blevet forberedt.
Det skyldes, at der kunne være sket ændringer under filkopieringen. Operationen xtrabackup --prepare --target-dir=/mysql/backup gør sikkerhedskopidataene perfekt tidsmæssigt konsistente.
Forberedelsesoperationen kan udføres på enhver maskine. Det er ikke nødvendigt at gøre det på serveren, hvor den oprindelige database 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 sikkerhedskopi:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date %F%H%M%S)».gz /mysql/backupGendannelse af sikkerhedskopi
Inden du går i gang med at gendanne sikkerhedskopien på den målsatte server, skal dataene være forberedt. Hvordan du gør det, kan du se ovenfor.
Processen til gendannelse af data er meget simpel. Du skal udpakke 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 indstillingen —copy-back.
Kommandoen nedenfor vil flytte sikkerhedskopien til datadir målsserveren:
xtrabackup --copy-back --target-dir=/mysql/backupMulighed 2
Du kan også vælge at gøre det uden værktøjet XtraBackup.
Alt hvad du skal gøre, er at kopiere sikkerhedskopien til datadir. Du kan gøre dette ved hjælp af cp eller rsync.
Det er vigtigt at forstå, at processen til gendannelse af sikkerhedskopien reelt handler om at erstatte indholdet af mappen datadir.
Før du begynder gendannelsen af sikkerhedskopien på den målsatte server, skal du:
Stoppe MySQL-serveren.
Tømme mappen datadir eller flytte dens indhold et andet sted. Mappen datadir skal være helt tom.
Når dataoverførslen til datadir MySQL-serveren er afsluttet, kan du starte serveren.
Brugte materialer
.
Kilde: habr.com
