Percona XtraBackup ํซ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์ ์ํ ์ ํธ๋ฆฌํฐ์ ๋๋ค. MySQL์.
๋ฐ์ดํฐ ๋ฐฑ์ ์ ์์ฑํ ๋ ํ ์ด๋ธ์ ์ ๊ธฐ์ง ์์ผ๋ฉฐ ์์คํ ์ ์๋ฌด๋ฐ ์ ํ ์์ด ๊ณ์ ์๋๋ฉ๋๋ค.
์์คํธ๋ผ๋ฐฑ์ 2.4 ํ ์ด๋ธ์ ๋ฐฑ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค ์ ์์ต๋๋ค. InnoDB, ์์คํธ๋ผDB ะธ ๋ง์ด์ด์ผ ์๋ฒ์์ MySQL 5.11, 5.5, 5.6 ๋ฐ 5.7, ๊ทธ๋ฆฌ๊ณ ์๋ฒ์์๋ ํผ ์ฝ๋ ์ MySQL์ ั ์์คํธ๋ผDB.
์์ ํ๋ ค๋ฉด MySQL 8.x ๋ฒ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค XtraBackup 8.x. ์ด ๊ธฐ์ฌ์์๋ ๋ค์์ ๋ํด์๋ง ์ด์ผ๊ธฐํฉ๋๋ค. ์์คํธ๋ผ๋ฐฑ์ 2.4.
์ฃผ์ ์ฅ์ ์ถ๊ฐ ๋ฐฑ์ ์ด ์ ํธ๋ฆฌํฐ๋ ๋ก๋๊ฐ ๋ง์ ์๋ฒ์ ๋ฐฑ์ ์์ฑ๊ณผ ํธ๋์ญ์ ์๊ฐ ์ ์ ์์คํ ๋ชจ๋์ ์ ํฉํ๋ค๋ ๊ฒ์ ๋๋ค.
MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด ํฌ๊ธฐ๊ฐ ์๋นํ ๊ฒฝ์ฐ(์์ญ ๊ธฐ๊ฐ๋ฐ์ดํธ) ํ์ค ์ ํธ๋ฆฌํฐ mysqldump ๋ฐฑ์ ๋ณต์ฌ๋ณธ์ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์์ผ๋ฉฐ ๋คํ๋ฅผ ๋ณต์ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ค์น
์ค์น ์ถ๊ฐ ๋ฐฑ์ ์ ์ฅ์์์ ์ ์ ํ ํ๋ฅด ์ฝ๋.
๋ค์ ๋ช ๋ น์ ์์ฐจ์ ์ผ๋ก ์คํํฉ๋๋ค.
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 MySQL ์๋ฒ 2.4.20 Linux(x5.7.26) ๊ธฐ๋ฐ ๋ฒ์ 8664(๊ฐ์ ID: c8b4056)
์ ๊ทผ ๊ถํ, ์ฌ์ฉ ๊ถํ ๋ฐ ํน๊ถ
XtraBackup์ ๋ค์์ ์ํํ ์ ์์ด์ผ ํฉ๋๋ค.
-
MySQL ์๋ฒ์ ์ฐ๊ฒฐํฉ๋๋ค.
-
๋๋ ํฐ๋ฆฌ์ ๋ํ ์ก์ธ์ค ๊ถํ์ด ์์ต๋๋ค. ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ.
-
๋ฐฑ์ ๋ณต์ฌ๋ณธ์ ์์ฑํ ๋ ์ง์ ๋ ๋งค๊ฐ๋ณ์์ ๋ํ ์ฐ๊ธฐ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ๋์ ๋๋ ํ ๋ฆฌ ๋ชฉ๋ก.
๋ฐ์ดํฐ๋๋ ํฐ๋ ๋ฌด์์ธ๊ฐ์?
๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๊ฐ ์๋ ๋๋ ํฐ๋ฆฌ์ ๋๋ค. MySQL์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ชจ๋ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋๋ถ๋ถ์ Linux ๋ฐฐํฌํ์์ ๊ธฐ๋ณธ ๋๋ ํฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. / var / lib / mysql.
target-dir ๋๋ ํ ๋ฆฌ๋ ๋ฌด์์ ๋๊น?
๋์ ๋๋ ํ ๋ฆฌ - ๋ฐฑ์ ์ด ์ ์ฅ๋ ๋๋ ํฐ๋ฆฌ์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์์๊ฒ๋ ๋ฐฑ์ ํ ํ ์ด๋ธ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ค์ ์ก์ธ์ค ๊ถํ์ด ํ์ํฉ๋๋ค.
-
ํ ์ด๋ธ ๋ค์ ๋ก๋ ๋ฐ ์ ๊ธ
-
๋ณต์ ํด๋ผ์ด์ธํธ
-
ํ ์ด๋ธ์คํ์ด์ค ์์ฑ
-
๋ฐฉ๋ฒ
-
์ํผ
-
๋ชน์ ๋ ๋ค์ด ๋๋ค
-
INSERT
-
SELECT
๊ตฌ์ฑ
๊ตฌ์ฑ ์ถ๊ฐ ๋ฐฑ์ ํ์ค MySQL ์ต์ ๊ณผ ๋์ผํ๊ฒ ๋์ํ๋ ์ต์ ์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ฌด์์ ์๋ฏธํ ๊น์?
๊ตฌ์ฑ ๋งค๊ฐ๋ณ์๋ ๋ช ๋ น์ค์ด๋ DBMS ๊ตฌ์ฑ ํ์ผ์์ ์ง์ ํ ์ ์์ต๋๋ค. /etc/my.cnf.
XtraBackup ์ ํธ๋ฆฌํฐ๋ ์คํ ํ ํํฐ์ ์ ์ฝ์ต๋๋ค. [mysqld๋ฅผ] ะธ [์ถ๊ฐ ๋ฐฑ์ ] MySQL ๊ตฌ์ฑ ํ์ผ์์. ์ด๋ ์ ํธ๋ฆฌํฐ๊ฐ ๊ฐ ๋ฐฑ์ ์ค์ ๋งค๊ฐ๋ณ์๋ฅผ ์๋์ผ๋ก ์ง์ ํ์ง ์๊ณ ๋ DBMS ์ค์ ์ ์ฌ์ฉํ ์ ์๋๋ก ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ๊ฐ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ๋งค๊ฐ๋ณ์ InnoDB ์ฐ๋ฆฌ๋ ๊ทํ์ DBMS ๊ตฌ์ฑ์์ XtraBackup์ ์ป์ต๋๋ค.
XtraBackup์ด ์๋ํ๋๋ก ํ๋ ค๋ฉด ์น์ ์ ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ ์ํ๋ ค๋ ๊ฒฝ์ฐ [mysqld๋ฅผ], ์น์ ์ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ํ์ญ์์ค. [์ถ๊ฐ ๋ฐฑ์ ]. ๋์ค์ ์ฝ์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๋ ๋์์ง๋๋ค.
๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ ํ์๊ฐ ์์ต๋๋ค. ๋ด.cnf. ๋ชจ๋ ํ์ ๋งค๊ฐ๋ณ์๋ ๋ช ๋ น์ค์์ ์ง์ ํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น์ ์ ํธ๋ฆฌํ๊ฒ ๋ฐฐ์นํ ์ ์๋ ์ ์ผํ ๊ฒ [์ถ๊ฐ ๋ฐฑ์ ] ๋น์ ์ ๋ด.cnf ๋งค๊ฐ๋ณ์์ ๋๋ค target_dir, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฑ์ ์ด ์ ์ฅ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ ํ ์ฌํญ์ ๋๋ค.
๋ฐฑ์ ๋ณต์ฌ๋ณธ์ด ์๋ ๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์ ๋ด.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.
๊ทธ๋ฐ ๋ค์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ๋ฐฑ์ ๋ฐฑ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด์ ์ ์ฅํ์ธ์ /mysql/๋ฐฑ์ /:
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 --copy-back --target-dir=/mysql/backup
์ต์ 2
์ ํธ๋ฆฌํฐ ์์ด๋ ๋ค๋ฅด๊ฒ ํ ์ ์์ต๋๋ค. ์ถ๊ฐ ๋ฐฑ์ .
๋ฐฑ์ ์ ๋ณต์ฌํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ. ๋น์ ์ ์ด๊ฒ์ ํ ์ ์์ต๋๋ค cp ๋๋ rsync.
๋ฐฑ์ ๋ณต์ ์ ์ฐจ๋ ๊ฒฐ๊ตญ ๋๋ ํฐ๋ฆฌ ๋ด์ฉ์ ๋ฐ๊พธ๋ ๊ฒ์ผ๋ก ์์ฝ๋๋ค๋ ์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ.
๋์ ์๋ฒ์์ ๋ฐฑ์ ๋ณต์์ ์์ํ๊ธฐ ์ ์ ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
-
MySQL ์๋ฒ๋ฅผ ์ค์งํฉ๋๋ค.
-
๋น ํด๋ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ๋๋ ํด๋น ์ฝํ ์ธ ๋ฅผ ๋ค๋ฅธ ์์น๋ก ์ด๋ํ์ธ์. ๋ชฉ๋ก ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ๋น์ด ์์ด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ก์ ์๋ฃํ ํ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ MySQL ์๋ฒ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
์ฌ์ฉ ๋ ์ฌ๋ฃ
์ถ์ฒ : habr.com