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 InnoDB, XtraDB и 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)
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
Kilde: www.habr.com