Krei MySQL-sekurkopion uzante la ilon XtraBackup

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 InnoDBXtraDB и 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)

Krei MySQL-sekurkopion uzante la ilon XtraBackup

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

Oficiala dokumentaro percona XtraBackup.

fonto: www.habr.com

Aldoni komenton