ื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ MySQL ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช XtraBackup

Percona XtraBackup ื”ื•ื ื›ืœื™ ืขื–ืจ ืœื’ื™ื‘ื•ื™ื™ื ื—ืžื™ื ืฉืœ ืžืกื“ื™ ื ืชื•ื ื™ื MySQL.

ื‘ืขืช ื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ ื ืชื•ื ื™ื, ืื™ืŸ ื˜ื‘ืœืื•ืช ื ื ืขืœื•ืช, ื•ื”ืžืขืจื›ืช ืฉืœืš ืžืžืฉื™ื›ื” ืœืคืขื•ืœ ืœืœื ื”ื’ื‘ืœื•ืช ื›ืœืฉื”ืŸ.

XtraBackup 2.4 ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืขื•ืชืงื™ ื’ื™ื‘ื•ื™ ืฉืœ ื˜ื‘ืœืื•ืช InnoDBXtraDB ะธ MyISAM ืขืœ ืฉืจืชื™ื MySQL 5.11, 5.5, 5.6 ื•-5.7, ื•ื’ื ื‘ืฉืจืช ืคืจืงื•ื ื” ืขื‘ื•ืจ MySQL ั XtraDB.

ืœืขื‘ื•ื“ ืขื MySQL 8.x ื™ืฉ ืœื”ืฉืชืžืฉ ื‘ื’ืจืกื” XtraBackup 8.x. ื”ืžืืžืจ ื”ื–ื” ื™ื“ื‘ืจ ืจืง ืขืœ XtraBackup 2.4.

ื”ื™ืชืจื•ืŸ ื”ืขื™ืงืจื™ XtraBackup ื”ื•ื ืฉืฉื™ืจื•ืช ื–ื” ืžืชืื™ื ื”ืŸ ืœื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ื™ื ืฉืœ ืฉืจืชื™ื ื˜ืขื•ื ื™ื ืžืื•ื“ ื•ื”ืŸ ืœืžืขืจื›ื•ืช ืขื ืžืกืคืจ ื ืžื•ืš ืฉืœ ืขืกืงืื•ืช.

ืื ื”ื’ื•ื“ืœ ื”ื›ื•ืœืœ ืฉืœ ืžืกื“ื™ ื”ื ืชื•ื ื™ื ืฉืœ MySQL ื”ื•ื ืžืฉืžืขื•ืชื™ (ืขืฉืจื•ืช ื’ื™ื’ื”-ื‘ื™ื™ื˜), ืื– ื›ืœื™ ื”ืฉื™ืจื•ืช ื”ืกื˜ื ื“ืจื˜ื™ mysqldump ืœื ื™ืืคืฉืจ ืœืš ืœื™ืฆื•ืจ ื‘ืžื”ื™ืจื•ืช ืขื•ืชืง ื’ื™ื‘ื•ื™, ื•ืฉื—ื–ื•ืจ ื”-dump ื™ื™ืงื— ื”ืจื‘ื” ื–ืžืŸ.

ื”ืชืงื ื”

ื”ืชืงื ื” XtraBackup ืžื”ืžืื’ืจ ืžึทืชึฐืึดื™ื ืคืจืงื•ื ื”.

ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช ื‘ืจืฆืฃ:

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. ืœืื—ืจ ื”ื”ืชืงื ื”, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื” xtrabackup -v. ืžืื–, ื—ืฉื•ื‘ ืœื•ื•ื“ื ื›ื™ ื”ืฉื™ืจื•ืช ืคื•ืขืœ ื›ื”ืœื›ื” ืขืœ ื”ืฉืจืช. ื›ืชื•ืฆืื” ืžื›ืš, ืžืฉื”ื• ื›ื–ื” ื™ื•ืฆื’ ืขืœ ื”ืžืกืš:

xtrabackup: ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืฉืจืช ืžื–ื•ื”ื™ื: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect โ€” innodbflushlogattrxcommit=0xtrabackup ื’ืจืกื” 2.4.20 ืžื‘ื•ืกืกืช ืขืœ MySQL ืฉืจืช 5.7.26 Linux (x8664) (ืžื–ื”ื” ื’ืจืกื”: c8b4056)

ื™ืฆื™ืจืช ื’ื™ื‘ื•ื™ MySQL ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช XtraBackup

ื–ื›ื•ื™ื•ืช ื’ื™ืฉื”, ื”ืจืฉืื•ืช ื•ื”ืจืฉืื•ืช 

XtraBackup ืืžื•ืจ ืœื”ื™ื•ืช ืžืกื•ื’ืœ:

  • ื”ืชื—ื‘ืจ ืœืฉืจืช MySQL ืฉืœืš.

  • ื™ืฉ ื–ื›ื•ื™ื•ืช ื’ื™ืฉื” ืœืกืคืจื™ื™ื” ื“ืื˜ืื“ื™ืจ

  • ื‘ืขืช ื™ืฆื™ืจืช ืขื•ืชืง ื’ื™ื‘ื•ื™, ื™ืฉ ื–ื›ื•ื™ื•ืช ื›ืชื™ื‘ื” ืœืคืจืžื˜ืจ ืฉืฆื•ื™ืŸ target-dir ืงึธื˜ึธืœื•ึนื’.

ืžื” ื–ื” datadir?

ื“ืื˜ืื“ื™ืจ ื”ื•ื ื”ืกืคืจื™ื™ื” ืฉื‘ื” ืฉืจืช ืžืกื“ ื”ื ืชื•ื ื™ื MySQL ืžืื—ืกืŸ ื ืชื•ื ื™ื. ื›ืœ ืžืกื“ื™ ื”ื ืชื•ื ื™ื, ื›ืœ ื”ื˜ื‘ืœืื•ืช ื ืžืฆืื™ื ืฉื. ื‘ืจื•ื‘ ื”ื”ืคืฆื•ืช ืฉืœ ืœื™ื ื•ืงืก, ืกืคืจื™ื™ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื /var/lib/mysql.

ืžื”ื™ ืกืคืจื™ื™ืช target-dir?

target-dir - ื–ื•ื”ื™ ื”ืกืคืจื™ื™ื” ืฉื‘ื” ื™ื™ืฉืžืจ ื”ื’ื™ื‘ื•ื™.

ืžืฉืชืžืฉ ืžืกื“ ื”ื ืชื•ื ื™ื ืฆืจื™ืš ืืช ื”ืจืฉืื•ืช ื”ื’ื™ืฉื” ื”ื‘ืื•ืช ืœื˜ื‘ืœืื•ืช ื•ืœืžืกื“ื™ ื”ื ืชื•ื ื™ื ืฉื™ื’ื•ื‘ื•:

  • ื˜ืขืŸ ืžื—ื“ืฉ ื•ื ืขืœ ืฉื•ืœื—ื ื•ืช

  • ืœืงื•ื— ืจืคืœื™ืงืฆื™ื”

  • ืฆื•ืจ ื—ืœืœ ืฉื•ืœื—ื ื•ืช

  • ืชื”ืœื™ืš

  • SUPER

  • ืœื™ืฆื•ืจ

  • INSERT

  • ืœื‘ื—ื•ืจ

ืชึฐืฆื•ึผืจึธื” 

ืชึฐืฆื•ึผืจึธื” XtraBackup ื ืขืฉื” ื‘ืืžืฆืขื•ืช ืืคืฉืจื•ื™ื•ืช ืฉืžืชื ื”ื’ื•ืช ื›ืžื• ืืคืฉืจื•ื™ื•ืช MySQL ืกื˜ื ื“ืจื˜ื™ื•ืช.

ืžื” ื–ื” ืื•ืžืจ?

ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืคืจืžื˜ืจื™ื ืฉืœ ืชืฆื•ืจื” ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ืื• ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ืฉืœ DBMS, ืœืžืฉืœ ื‘ /etc/my.cnf.

ื›ืœื™ ื”ืฉื™ืจื•ืช XtraBackup ืงื•ืจื ืžื—ื™ืฆื•ืช ืœืื—ืจ ื”ื”ืฉืงื” [Mysqld] ะธ [xtrabackup] ืžืงื•ื‘ืฆื™ ืชืฆื•ืจื” ืฉืœ MySQL. ื–ื” ื ืขืฉื” ื›ื“ื™ ืฉืชื•ื›ื ื™ืช ื”ืฉื™ืจื•ืช ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื”ื’ื“ืจื•ืช ืฉืœ ื”-DBMS ืฉืœืš ืžื‘ืœื™ ืœืฆื™ื™ืŸ ื‘ืื•ืคืŸ ื™ื“ื ื™ ืืช ื”ืคืจืžื˜ืจื™ื ื‘ืžื”ืœืš ื›ืœ ื’ื™ื‘ื•ื™.

ืœืžืฉืœ, ื”ืขืจืš ื“ืื˜ืื“ื™ืจ ื•ื›ืžื” ืคืจืžื˜ืจื™ื InnoDB ืื ื• ืžืงื‘ืœื™ื XtraBackup ืžื”ืชืฆื•ืจื” ืฉืœ ื”-DBMS ืฉืœืš.

ืื ื›ื“ื™ ืฉ-XtraBackup ื™ืขื‘ื•ื“ ืืชื” ืจื•ืฆื” ืœืขืงื•ืฃ ืืช ื”ืคืจืžื˜ืจื™ื ืฉื ืžืฆืื™ื ื‘ืกืขื™ืฃ [Mysqld], ื•ืื– ืคืฉื•ื˜ ืฆื™ื™ืŸ ืื•ืชื ื‘ืงื•ื‘ืฅ ื”ืชืฆื•ืจื” ื‘ืกืขื™ืฃ [xtrabackup]. ืžื›ื™ื•ื•ืŸ ืฉื”ื ื™ืงืจืื• ืžืื•ื—ืจ ื™ื•ืชืจ, ื”ืขื“ื™ืคื•ืช ืฉืœื”ื ืชื”ื™ื” ื’ื‘ื•ื”ื” ื™ื•ืชืจ.

ืืชื” ืœื ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืคืจืžื˜ืจื™ื my.cnf. ื ื™ืชืŸ ืœืฆื™ื™ืŸ ืืช ื›ืœ ื”ืคืจืžื˜ืจื™ื ื”ื ื“ืจืฉื™ื ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”. ื‘ื“ืจืš ื›ืœืœ ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉื ื™ืชืŸ ืœืžืงื ื‘ื ื•ื—ื•ืช ื‘ืงื˜ืข [xtrabackup] ืฉืœืš my.cnf ื”ื•ื ืคืจืžื˜ืจ target_dir, ืืฉืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ืžืฆื™ื™ื ืช ืืช ื”ืกืคืจื™ื™ื” ืฉื‘ื” ื™ืžื•ืงืžื• ื”ื’ื™ื‘ื•ื™ื™ื. ืื‘ืœ ื–ื” ืื•ืคืฆื™ื•ื ืœื™.

ื“ื•ื’ืžื” ืœืฆื™ื•ืŸ ื”ื ืชื™ื‘ ืœืกืคืจื™ื™ื” ืขื ืขื•ืชืง ื’ื™ื‘ื•ื™ ื‘ my.cnf:

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

ืกืงืจื™ืคื˜ ื’ื™ื‘ื•ื™

ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืกืงืจื™ืคื˜ ื”ื‘ื ื›ื“ื™ ืœื™ืฆื•ืจ ื’ื™ื‘ื•ื™:

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

ืžื” ืงื•ืจื” ื‘ืžื”ืœืš ื‘ื™ืฆื•ืข ืกืงืจื™ืคื˜?

ืงื•ื“ื ื›ืœ, ืื ื• ืžื ืงื™ื (ืžื•ื—ืงื™ื) ืืช ื”ืกืคืจื™ื™ื” ืฉื‘ื” ื ืฉืžื•ืจ ืืช ืขื•ืชืง ื”ื’ื™ื‘ื•ื™:

rm -rf /mysql/backup.

ืœืื—ืจ ืžื›ืŸ, ื‘ืืžืฆืขื•ืช ื›ืœื™ ื”ืฉื™ืจื•ืช XtraBackup ืœื™ืฆื•ืจ ืขื•ืชืง ื’ื™ื‘ื•ื™ ื•ืœืฉืžื•ืจ ืื•ืชื• /mysql/backup/:

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

ื‘ืขื‘ืจ ื™ืฆืจื ื• ืžืฉืชืžืฉ ื‘-MySQL xtrabackup ืขื ื”ื”ืจืฉืื•ืช ื”ื ื“ืจืฉื•ืช. ืฉื™ืžื•ืฉ ื‘ืคืจืžื˜ืจ target-dir ืื ื• ืžืฆื™ื™ื ื™ื ืืช ื”ืกืคืจื™ื™ื” ืฉื‘ื” ื™ืฉ ืœืฉืžื•ืจ ืืช ื”ื’ื™ื‘ื•ื™.

ะ’ะฐะถะฝั‹ะน ะผะพะผะตะฝั‚!

ืฉื™ืžื• ืœื‘ ืœืฉื•ืจืช ื”ืกืงืจื™ืคื˜:

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

ื ืชื•ื ื™ ืงื˜ืœื•ื’ /mysql/ื’ื™ื‘ื•ื™ ืื™ื ื ืขืงื‘ื™ื™ื ืขื“ ืฉื”ื ืžื‘ื•ืฉืœื™ื. 

ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉืฉื™ื ื•ื™ื™ื ืขืฉื•ื™ื™ื ืœื”ืชืจื—ืฉ ื‘ื–ืžืŸ ื”ืขืชืงืช ืงื‘ืฆื™ื. ืžื‘ืฆืข xtrabackup --prepare --target-dir=/mysql/backup ื”ื•ืคืš ืืช ื ืชื•ื ื™ ื”ื’ื™ื‘ื•ื™ ืœืขืงื‘ื™ื™ื ืœื—ืœื•ื˜ื™ืŸ ืœืื•ืจืš ื–ืžืŸ.

ืืชื” ื™ื›ื•ืœ ืœื‘ืฆืข ืืช ืคืขื•ืœืช ื”ื›ื ืช ื”ื ืชื•ื ื™ื ื‘ื›ืœ ืžื›ื•ื ื”. ืื™ืŸ ืฆื•ืจืš ืœืขืฉื•ืช ื–ืืช ื‘ืฉืจืช ืฉื‘ื• ื ืžืฆื ื”-DBMS ื”ืžืงื•ืจ. ืืชื” ื™ื›ื•ืœ ืœื”ืขืชื™ืง ืืช ื”ื’ื™ื‘ื•ื™ ืœืฉืจืช ื”ื™ืขื“ ื•ืœื”ื›ื™ืŸ ืื•ืชื• ืฉื.

ื”ื“ื‘ืจ ื”ืื—ืจื•ืŸ ืฉืื ื• ืขื•ืฉื™ื ื”ื•ื ืœื™ืฆื•ืจ ืืจื›ื™ื•ืŸ ื‘ื• ืื ื• ืฉืžื™ื ืืช ื”ื’ื™ื‘ื•ื™ ืฉืœื ื•:

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-ยซ$(date % F% H% M% S)ยป.gz /mysql/backup

ืฉื—ื–ื•ืจ ื’ื™ื‘ื•ื™ 

ืœืคื ื™ ืฉืชื•ื›ืœ ืœืฉื—ื–ืจ ื’ื™ื‘ื•ื™ ืœืฉืจืช ื”ื™ืขื“, ื”ื ืชื•ื ื™ื ื—ื™ื™ื‘ื™ื ืœืขื‘ื•ืจ ืฉืœื‘ ื”ื›ื ื”. ืจืื” ืœืžืขืœื” ื›ื™ืฆื“ ืœืขืฉื•ืช ื–ืืช.

ืชื”ืœื™ืš ืฉื—ื–ื•ืจ ื”ื ืชื•ื ื™ื ื”ื•ื ืคืฉื•ื˜ ืžืื•ื“. ืขืœื™ืš ืœื—ืœืฅ ืืช ื”ื’ื™ื‘ื•ื™ ืžื”ืืจื›ื™ื•ืŸ ื•ืœื”ื—ืœื™ืฃ ืืช ื”ื ืชื•ื ื™ื ืคื ื™ืžื” ื“ืื˜ืื“ื™ืจ.

ื›ื™ืฆื“ ืœื”ื—ืœื™ืฃ ื ืชื•ื ื™ื ื‘-datadir?

ื‘ื•ืื• ื ื‘ื—ืŸ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช.

ืืคืฉืจื•ืช 1

ื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช XtraBackup. ืืชื” ืฆืจื™ืš ืœืฆื™ื™ืŸ ืืคืฉืจื•ืช --ื”ืขืชืง ื‘ื—ื–ืจื”

ื”ืคืงื•ื“ื” ืœืžื˜ื” ืชืขื‘ื™ืจ ืืช ื”ื’ื™ื‘ื•ื™ ืืœ ื“ืื˜ืื“ื™ืจ ืฉืจืช ื™ืขื“:

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

ืืคืฉืจื•ืช 2

ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื–ื” ืื—ืจืช, ืœืขืฉื•ืช ื‘ืœื™ ื”ืฉื™ืจื•ืช XtraBackup.

ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื”ืขืชื™ืง ืืช ื”ื’ื™ื‘ื•ื™ ืืœื™ื• ื“ืื˜ืื“ื™ืจ. ืืชื” ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื–ื” ืขื cp ืื• rsync.

ื—ืฉื•ื‘ ืœื”ื‘ื™ืŸ ืฉื”ื”ืœื™ืš ืœืฉื—ื–ื•ืจ ื’ื™ื‘ื•ื™ ืžืกืชื›ื ืจืง ื‘ื”ื—ืœืคืช ืชื•ื›ืŸ ื”ืกืคืจื™ื™ื” ื“ืื˜ืื“ื™ืจ.

ืœืคื ื™ ืฉืชืชื—ื™ืœ ืœืฉื—ื–ืจ ื’ื™ื‘ื•ื™ ื‘ืฉืจืช ื”ื™ืขื“, ืขืœื™ืš:

  • ืขืฆื•ืจ ืืช ืฉืจืช MySQL.

  • ื ืงื” ืชื™ืงื™ื™ื” ื“ืื˜ืื“ื™ืจ ืื• ืœื”ืขื‘ื™ืจ ืืช ืชื•ื›ื ื• ืœืžืงื•ื ืื—ืจ. ืงึธื˜ึธืœื•ึนื’ ื“ืื˜ืื“ื™ืจ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืจื™ืง.

ืœืื—ืจ ื”ืฉืœืžืช ื”ืขื‘ืจืช ื”ื ืชื•ื ื™ื ืืœ ื“ืื˜ืื“ื™ืจ ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืฉืจืช MySQL.

ื—ื•ืžืจื™ื ื‘ืฉื™ืžื•ืฉ

ืชื™ืขื•ื“ ืจืฉืžื™ ืคืจืงื•ื ื” XtraBackup.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”