Percona XtraBackup ir utilīta karstu datu bāzes dublēšanai MySQL.
Veidojot datu dublējumu, neviena tabula netiek bloķēta, un sistēma turpina darboties bez ierobežojumiem.
XtraBackup 2.4 var izveidot tabulu rezerves kopijas InnoDB, XtraDB и MyISAM serveros MySQL 5.11, 5.5, 5.6 un 5.7un arī serverī Perkona par MySQL с XtraDB.
Lai strādātu ar MySQL 8.x versija ir jāizmanto XtraBackup 8.x. Šajā rakstā tiks runāts tikai par XtraBackup 2.4.
Galvenā priekšrocība XtraBackup Šī utilīta ir piemērota gan ļoti noslogotu serveru dublējumkopiju veidošanai, gan sistēmām ar mazu darījumu skaitu.
Ja jūsu MySQL datu bāzu kopējais lielums ir ievērojams (desmitiem gigabaitu), tad standarta utilīta mysqldump neļaus ātri izveidot rezerves kopiju, un izgāztuves atjaunošana prasīs daudz laika.
Uzstādīšana
Uzstādīšana XtraBackup no krātuves spējīgs Perkona.
Secīgi izpildiet šādas komandas:
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. Pēc instalēšanas palaidiet komandu xtrabackup -v
. Tā kā ir svarīgi pārliecināties, vai utilīta pareizi darbojas serverī. Rezultātā ekrānā tiks parādīts kaut kas līdzīgs šim:
xtrabackup: atpazīti servera argumenti: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup versija 2.4.20, pamatojoties uz MySQL servera 5.7.26 Linux (x8664) (pārskatīšanas ID: c8b4056)
Piekļuves tiesības, atļaujas un privilēģijas
XtraBackup jāspēj:
-
Izveidojiet savienojumu ar savu MySQL serveri.
-
Ir piekļuves tiesības direktorijam datu direktorijs.
-
Veidojot rezerves kopiju, jums ir rakstīšanas tiesības uz norādīto parametru mērķis-rež katalogu.
Kas ir datadir?
datu direktorijs ir direktorijs, kurā atrodas datu bāzes serveris MySQL saglabā datus. Ir visas datu bāzes, visas tabulas. Lielākajā daļā Linux izplatījumu noklusējuma direktorijs ir /var/lib/mysql.
Kas ir mērķa direktorija direktorijs?
mērķis-rež - Šis ir direktorijs, kurā tiks saglabāts dublējums.
Datu bāzes lietotājam ir nepieciešamas šādas piekļuves tiesības tabulām un datu bāzēm, lai tās varētu dublēt:
-
ATKĀRTOTI IELĀDĒJIET un BLOĶĒT TABULU
-
REPLIKĀCIJAS KLIENTS
-
IZVEIDOT TABLESPLACE
-
PROCESS
-
SUPER
-
CREATE
-
INSERT
-
SELECT
Konfigurācija
Konfigurācija XtraBackup tiek darīts, izmantojot opcijas, kas darbojas tāpat kā standarta MySQL opcijas.
Ko tas nozīmē?
Konfigurācijas parametrus var norādīt vai nu komandrindā, vai DBVS konfigurācijas failā, piemēram, in /etc/my.cnf.
XtraBackup utilīta nolasa nodalījumus pēc palaišanas [mysqld] и [xtrabackup] no MySQL konfigurācijas failiem. Tas tiek darīts, lai utilīta varētu izmantot jūsu DBVS iestatījumus, katras dublēšanas laikā manuāli nenorādot parametrus.
Piemēram, vērtība datu direktorijs un daži parametri InnoDB Mēs iegūstam XtraBackup no jūsu DBVS konfigurācijas.
Ja vēlaties, lai XtraBackup darbotos, vēlaties ignorēt sadaļā norādītos parametrus [mysqld], pēc tam vienkārši norādiet tos konfigurācijas failā sadaļā [xtrabackup]. Tā kā tie tiks lasīti vēlāk, viņu prioritāte būs augstāka.
Jums nav jāpievieno nekādi parametri my.cnf. Komandrindā var norādīt visus nepieciešamos parametrus. Parasti vienīgais, ko var ērti ievietot sadaļā [xtrabackup] tavs my.cnf ir parametrs mērķa_dir, kas pēc noklusējuma norāda direktoriju, kurā tiks ievietotas dublējumkopijas. Bet tas nav obligāti.
Piemērs, kā norādīt ceļu uz direktoriju ar rezerves kopiju my.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Rezerves skripts
Lai izveidotu dublējumu, varat izmantot šādu skriptu:
#!/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
Kas notiek skripta izpildes laikā?
Pirmkārt, mēs notīrām (izdzēšam) direktoriju, kurā saglabāsim rezerves kopiju:
rm -rf /mysql/backup.
Pēc tam, izmantojot utilītu XtraBackup izveidojiet rezerves kopiju un saglabājiet to /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Iepriekš mēs izveidojām lietotāju MySQL xtrabackup
ar nepieciešamajām privilēģijām. Izmantojot parametru target-dir
mēs norādām direktoriju, kurā jāsaglabā dublējums.
Svarīgs punkts!
Ņemiet vērā skripta rindiņu:
xtrabackup --prepare --target-dir=/mysql/backup
Kataloga dati /mysql/backup nav konsekventi, kamēr tie nav pagatavoti.
Fakts ir tāds, ka failu kopēšanas laikā var rasties izmaiņas. Darbība xtrabackup --prepare --target-dir=/mysql/backup
padara dublējuma datus perfekti konsekventus laika gaitā.
Jūs varat veikt datu sagatavošanas darbību jebkurā mašīnā. Tas nav jādara serverī, kurā atrodas avota DBVS. Varat kopēt dublējumu uz mērķa serveri un sagatavot to tur.
Pēdējā lieta, ko mēs darām, ir izveidot arhīvu, kurā ievietojam dublējumu:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Dublējuma atjaunošana
Lai varētu atjaunot dublējumu mērķa serverī, datiem ir jāiziet sagatavošanas posms. Skatiet iepriekš, kā to izdarīt.
Datu atkopšanas process ir ļoti vienkāršs. Jums ir jāizņem dublējums no arhīva un jāaizstāj dati datu direktorijs.
Kā nomainīt datus datu direktorijā?
Apsvērsim divus variantus.
iespēja 1
Izmantojiet utilītu XtraBackup. Jums jānorāda opcija --kopēt atpakaļ.
Tālāk esošā komanda pārsūtīs dublējumu uz datu direktorijs mērķa serveris:
xtrabackup --copy-back --target-dir=/mysql/backup
iespēja 2
To var izdarīt savādāk, iztikt bez utilītas XtraBackup.
Viss, kas jums jādara, ir kopēt dublējumu uz datu direktorijs. To var izdarīt ar cp vai rsync.
Ir svarīgi saprast, ka dublējuma atjaunošanas procedūra ir tikai direktorija satura aizstāšana datu direktorijs.
Pirms sākat atjaunot dublējumu mērķa serverī, jums ir:
-
Apturēt MySQL serveri.
-
Notīrīt mapi datu direktorijs vai pārvietot tā saturu uz citu vietu. Katalogs datu direktorijs jābūt tukšam.
Pēc datu pārsūtīšanas pabeigšanas uz datu direktorijs MySQL serveri var palaist.
izmantoti materiāli
Avots: www.habr.com