Percona XtraBackup estas ilo por varmaj datumbazaj sekurkopioj MySQL.
Dum kreado de datumrezervo, neniuj tabloj estas ŝlositaj, kaj via sistemo daŭre funkcias sen iuj limigoj.
XtraBackup 2.4 povas krei rezervajn kopiojn de tabeloj InnoDB, XtraDB и MyISAM sur serviloj MySQL 5.11, 5.5, 5.6 kaj 5.7, kaj ankaŭ sur la servilo percona por MySQL с XtraDB.
Por labori kun MySQL 8.x versio estu uzata XtraBackup 8.x. Ĉi tiu artikolo nur parolos pri XtraBackup 2.4.
La ĉefa avantaĝo XtraBackup estas, ke ĉi tiu utileco taŭgas kaj por krei sekurkopiojn de tre ŝarĝitaj serviloj kaj por sistemoj kun malalta nombro da transakcioj.
Se la totala grandeco de viaj MySQL-datumbazoj estas grava (dekoj da gigabajtoj), tiam la norma ilo mysqldump ne permesos al vi rapide krei rezervan kopion, kaj restarigi la rubejon prenos multe da tempo.
fikso
fikso XtraBackup el la deponejo apt Percona.
Rulu la sekvajn komandojn sinsekve:
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. Post instalado, rulu la komandon xtrabackup -v
. Ĉar, estas grave certigi, ke la utileco funkcias ĝuste en la servilo. Kiel rezulto, io tia aperos sur la ekrano:
xtrabackup: agnoskitaj servilaj argumentoj: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirekta — innodbflushlogattrxcommit=0xtrabackup-versio 2.4.20 bazita sur MySQL-servilo 5.7.26 Linukso (x8664) (revizioid: c8b4056)
Alirrajtoj, permesoj kaj privilegioj
XtraBackup devus povi:
-
Konektu al via MySQL-servilo.
-
Havu alirrajtojn al la dosierujo estas datumoj.
-
Kreante rezervan kopion, havu skribrajtojn al la specifita parametro cel-dir katalogo.
Kio estas datadir?
estas datumoj estas la dosierujo kie la datumbaza servilo MySQL konservas datumojn. Ĉiuj datumbazoj, ĉiuj tabeloj estas tie. En la plej multaj Linukso-distribuoj, la defaŭlta dosierujo estas /var/lib/mysql.
Kio estas cel-direktoro?
cel-dir - Ĉi tiu estas la dosierujo kie la sekurkopio estos konservita.
La datumbaza uzanto bezonas la sekvajn alirrajtojn al la sekurkopidaj tabeloj kaj datumbazoj:
-
REALDU kaj ŜLORU TABLOJ
-
REPLIKA KLIENTO
-
KREU TABLO-SPACO
-
PROKESO
-
EKSTRA
-
CREATE
-
ENSERTO
-
ELEKTU
Agordo
Agordo XtraBackup farita uzante opciojn kiuj kondutas same kiel normaj MySQL-opcioj.
Kion tio signifas?
Agordaj parametroj povas esti specifitaj aŭ sur la komandlinio aŭ en la agorda dosiero de DBMS, ekzemple en /etc/my.cnf.
XtraBackup ilo legas sekciojn post lanĉo [mysqld] и [xtrabackup] el MySQL-agordaj dosieroj. Ĉi tio estas farita por ke la ilo povas uzi la agordojn de via DBMS sen devi permane specifi la parametrojn dum ĉiu sekurkopio.
Ekzemple, la valoro estas datumoj kaj iuj parametroj InnoDB Ni ricevas XtraBackup el la agordo de via DBMS.
Se por ke XtraBackup funkciu, vi volas anstataŭi la parametrojn kiuj estas en la sekcio [mysqld], tiam simple specifu ilin en la agorda dosiero en la sekcio [xtrabackup]. Ĉar ili estos legitaj poste, ilia prioritato estos pli alta.
Vi ne devas aldoni iujn parametrojn al mia.cnf. Ĉiuj bezonataj parametroj povas esti specifitaj sur la komandlinio. Kutime la sola afero, kiu povas esti oportune metita en la sekcion [xtrabackup] via mia.cnf estas parametro cel_dir, kiu defaŭlte specifas la dosierujon kie sekurkopioj estos metitaj. Sed ĉi tio estas laŭvola.
Ekzemplo de specifado de la vojo al la dosierujo kun rezerva kopio en mia.cnf:
[xtrabackup]
target_dir = /data/backups/mysql/
Rezerva skripto
Vi povas uzi la sekvan skripton por krei sekurkopion:
#!/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
Kio okazas dum skripto-ekzekuto?
Antaŭ ĉio, ni purigas (forigas) la dosierujon, en kiu ni konservos la rezervan kopion:
rm -rf /mysql/backup.
Tiam, uzante la utilecon XtraBackup kreu rezervan kopion kaj konservu ĝin /mysql/backup/:
xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup
Antaŭe, ni kreis uzanton en MySQL xtrabackup
kun la postulataj privilegioj. Uzante la parametron target-dir
ni specifas la dosierujon kie la sekurkopio estu konservita.
Grava punkto!
Notu la skriptlinion:
xtrabackup --prepare --target-dir=/mysql/backup
Katalogo-datumoj /mysql/backup ne estas konsekvencaj ĝis ili estas kuiritaj.
Fakte, ŝanĝoj povus okazi dum kopiado de dosieroj. Operacio xtrabackup --prepare --target-dir=/mysql/backup
igas rezervajn datumojn perfekte konsekvencaj laŭlonge de la tempo.
Vi povas plenumi la datumpretigan operacion sur iu ajn maŝino. Ne necesas fari tion sur la servilo, kie troviĝas la fonto DBMS. Vi povas kopii la sekurkopion al la cela servilo kaj prepari ĝin tie.
La lasta afero, kiun ni faras, estas krei arkivon en kiu ni metas nian sekurkopion:
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup
Restarigante sekurkopion
Antaŭ ol vi povas restarigi sekurkopion al la cela servilo, la datumoj devas trapasi preparan fazon. Vidu supre kiel fari tion.
La procezo de reakiro de datumoj estas tre simpla. Vi devas ĉerpi la sekurkopion el la arkivo kaj anstataŭigi la datumojn enen estas datumoj.
Kiel anstataŭigi datumojn en datadir?
Ni konsideru du eblojn.
Eblo 1
Uzu la utilecon XtraBackup. Vi devas specifi opcion --kopiu-reen.
La suba komando translokigos la sekurkopion al estas datumoj cela servilo:
xtrabackup --copy-back --target-dir=/mysql/backup
Eblo 2
Vi povas fari ĝin alimaniere, fari sen la utileco XtraBackup.
Ĉio, kion vi devas fari, estas kopii la sekurkopion al estas datumoj. Vi povas fari tion per cp aŭ rsync.
Gravas kompreni, ke la proceduro por restarigi sekurkopion resumas al nur anstataŭigi la enhavon de la dosierujo. estas datumoj.
Antaŭ ol vi komencas restarigi sekurkopion sur la cela servilo, vi devas:
-
Haltu MySQL-servilon.
-
Malplenigi dosierujon estas datumoj aŭ movi ĝian enhavon al alia loko. Katalogo estas datumoj devas esti malplena.
Post kompletigi la transdonon de datumoj al estas datumoj MySQL-servilo povas esti komencita.
Materialoj uzataj
fonto: www.habr.com