Paglikha ng MySQL backup gamit ang XtraBackup utility

Percona XtraBackup ay isang utility para sa mainit na pag-backup ng database MySQL.

Kapag gumagawa ng backup ng data, walang mga talahanayan ang naka-lock, at ang iyong system ay patuloy na gumagana nang walang anumang mga paghihigpit.

XtraBackup 2.4 maaaring lumikha ng mga backup na kopya ng mga talahanayan InnoDBXtraDB ΠΈ MyISAM sa mga server MySQL 5.11, 5.5, 5.6 at 5.7, at gayundin sa server percona para sa MySQL Ρ XtraDB.

Magtrabaho kasama si MySQL 8.x dapat gamitin ang bersyon XtraBackup 8.x. Ang artikulong ito ay tatalakayin lamang XtraBackup 2.4.

Ang pangunahing bentahe XtraBackup ay ang utility na ito ay angkop kapwa para sa paglikha ng mga backup ng mataas na load na mga server at para sa mga system na may mababang bilang ng mga transaksyon.

Kung ang kabuuang sukat ng iyong mga database ng MySQL ay makabuluhan (sampu-sampung gigabytes), kung gayon ang karaniwang utility mysqldump ay hindi magpapahintulot sa iyo na mabilis na lumikha ng isang backup na kopya, at ang pagpapanumbalik ng dump ay aabutin ng maraming oras.

Instalasyon

Instalasyon XtraBackup mula sa imbakan malamang Percona.

Patakbuhin ang sumusunod na mga utos nang sunud-sunod:

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. Pagkatapos ng pag-install, patakbuhin ang command xtrabackup -v. Dahil, mahalagang tiyakin na gumagana nang tama ang utility sa server. Bilang resulta, ang isang bagay na tulad nito ay ipapakita sa screen:

xtrabackup: kinikilalang mga argumento ng server: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect β€” innodbflushlogattrxcommit=0xtrabackup na bersyon 2.4.20 batay sa MySQL server 5.7.26 Linux (x8664) (revision id: c8b4056)

Paglikha ng MySQL backup gamit ang XtraBackup utility

Mga karapatan sa pag-access, pahintulot at pribilehiyo 

Ang XtraBackup ay dapat na:

  • Kumonekta sa iyong MySQL server.

  • Magkaroon ng mga karapatan sa pag-access sa direktoryo datadir

  • Kapag gumagawa ng backup na kopya, magkaroon ng mga karapatan sa pagsulat sa tinukoy na parameter target-dir katalogo.

Ano ang datadir?

datadir ay ang direktoryo kung saan ang database server MySQL nag-iimbak ng data. Lahat ng mga database, lahat ng mga talahanayan ay naroroon. Sa karamihan ng mga distribusyon ng Linux, ang default na direktoryo ay /var/lib/mysql.

Ano ang target-dir directory?

target-dir - Ito ang direktoryo kung saan ise-save ang backup.

Ang gumagamit ng database ay nangangailangan ng mga sumusunod na karapatan sa pag-access sa mga talahanayan at database upang ma-back up:

  • I-RELOAD at I-LOCK ANG MGA TABLE

  • REPLICATION CLIENT

  • GUMAWA NG TABLESPACE

  • PROCESS

  • Super

  • LILIKHA

  • INSERT

  • Piliin

Configuration 

Configuration XtraBackup tapos gamit ang mga opsyon na kumikilos katulad ng karaniwang mga opsyon sa MySQL.

Ano ang ibig sabihin nito?

Maaaring tukuyin ang mga parameter ng configuration sa command line o sa DBMS configuration file, halimbawa sa /etc/my.cnf.

Ang XtraBackup utility ay nagbabasa ng mga partisyon pagkatapos ng paglunsad [Mysqld] ΠΈ [xtrabackup] mula sa MySQL configuration file. Ginagawa ito upang magamit ng utility ang mga setting ng iyong DBMS nang hindi kinakailangang manu-manong tukuyin ang mga parameter sa bawat backup.

Halimbawa, ang halaga datadir at ilang mga parameter InnoDB Nakukuha namin ang XtraBackup mula sa configuration ng iyong DBMS.

Kung para gumana ang XtraBackup gusto mong i-override ang mga parameter na nasa seksyon [Mysqld], pagkatapos ay tukuyin lamang ang mga ito sa configuration file sa seksyon [xtrabackup]. Dahil babasahin sila mamaya, mas magiging priority nila.

Hindi mo kailangang magdagdag ng anumang mga parameter sa my.cnf. Ang lahat ng kinakailangang mga parameter ay maaaring tukuyin sa command line. Karaniwan ang tanging bagay na maaaring maginhawang mailagay sa seksyon [xtrabackup] iyong my.cnf ay isang parameter target_dir, na bilang default ay tumutukoy sa direktoryo kung saan ilalagay ang mga backup. Ngunit ito ay opsyonal.

Isang halimbawa ng pagtukoy sa landas patungo sa direktoryo na may backup na kopya sa my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Backup na script

Maaari mong gamitin ang sumusunod na script para gumawa ng backup:

#!/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

Ano ang nangyayari sa panahon ng pagpapatupad ng script?

Una sa lahat, nililinis (tinatanggal) namin ang direktoryo kung saan ise-save namin ang backup na kopya:

rm -rf /mysql/backup.

Pagkatapos, gamit ang utility XtraBackup gumawa ng backup na kopya at i-save ito /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Dati, gumawa kami ng user sa MySQL xtrabackup na may mga kinakailangang pribilehiyo. Gamit ang parameter target-dir tinukoy namin ang direktoryo kung saan dapat i-save ang backup.

Isang mahalagang punto!

Tandaan ang linya ng script:

xtrabackup --prepare --target-dir=/mysql/backup

Data ng katalogo /mysql/backup ay hindi pare-pareho hanggang sa sila ay luto. 

Ang katotohanan ay ang mga pagbabago ay maaaring mangyari habang kinokopya ang mga file. Operasyon xtrabackup --prepare --target-dir=/mysql/backup ginagawang ganap na pare-pareho ang backup na data sa paglipas ng panahon.

Maaari mong isagawa ang operasyon ng paghahanda ng data sa anumang makina. Hindi na kailangang gawin ito sa server kung saan matatagpuan ang pinagmulang DBMS. Maaari mong kopyahin ang backup sa target na server at ihanda ito doon.

Ang huling bagay na ginagawa namin ay lumikha ng isang archive kung saan inilalagay namin ang aming backup:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-Β«$(date % F% H% M% S)Β».gz /mysql/backup

Pagpapanumbalik ng backup 

Bago mo maibalik ang isang backup sa target na server, ang data ay dapat dumaan sa isang yugto ng paghahanda. Tingnan sa itaas kung paano ito gawin.

Ang proseso ng pagbawi ng data ay napaka-simple. Kailangan mong i-extract ang backup mula sa archive at palitan ang data sa datadir.

Paano palitan ang data sa datadir?

Isaalang-alang natin ang dalawang pagpipilian.

Pagpipilian 1

Gamitin ang utility XtraBackup. Kailangan mong tukuyin ang isang opsyon --copy-back

Ililipat ng command sa ibaba ang backup sa datadir target na server:

xtrabackup --copy-back --target-dir=/mysql/backup

Pagpipilian 2

Maaari mong gawin ito nang iba, gawin nang walang utility XtraBackup.

Ang kailangan mo lang gawin ay kopyahin ang backup sa datadir. Magagawa mo ito gamit ang cp o rsync.

Mahalagang maunawaan na ang pamamaraan para sa pagpapanumbalik ng isang backup ay bumababa sa pagpapalit lamang ng mga nilalaman ng direktoryo datadir.

Bago mo simulan ang pagpapanumbalik ng backup sa target na server, kailangan mong:

  • Itigil ang MySQL server.

  • I-clear ang folder datadir o ilipat ang mga nilalaman nito sa ibang lokasyon. Catalog datadir dapat walang laman.

Matapos makumpleto ang paglipat ng data sa datadir Maaaring simulan ang MySQL server.

Mga materyales na ginamit

Opisyal na dokumentasyon percona XtraBackup.

Pinagmulan: www.habr.com

Magdagdag ng komento