DBAtlas · 데이터베이스 운영 아틀라스

XtraBackup으로 full + incremental 물리 백업 및 복원

MySQL백업 및 PITR

명령어

# Full backup
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/full --parallel=4
# Incremental (based on the previous backup)
xtrabackup --backup --host=127.0.0.1 --user=bkp --password='Bkp#2024' --target-dir=/backup/inc1 --incremental-basedir=/backup/full

# Prepare: full and intermediate incrementals with --apply-log-only, final step without it
xtrabackup --prepare --apply-log-only --target-dir=/backup/full
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1
xtrabackup --prepare --target-dir=/backup/full

# Restore: mysqld stopped and datadir empty
systemctl stop mysqld
xtrabackup --copy-back --target-dir=/backup/full --datadir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
cat /backup/full/xtrabackup_binlog_info

하는 일

서버가 실행 중인 동안 InnoDB 파일과 redo log를 복사하여 hot 물리 백업을 수행한다. incremental 백업은 이전 백업 이후 변경된 페이지만 포함한다. prepare 단계는 redo를 적용하여 백업을 일관된 상태로 만든다.

사용 시점

빠른 복원(논리 방식보다 몇 배 빠름)이 필요한 대형 데이터베이스, replica 초기화, 일일 full + 시간별 incremental 전략용.

주의

XtraBackup 버전은 서버 릴리스 시리즈와 일치해야 한다(8.0 서버 → XtraBackup 8.0, 8.4 → 8.4). 서버가 XtraBackup 빌드보다 새로운 redo / data dictionary 형식을 사용하면 백업이 거부된다. prepare하지 않은 백업은 일관성이 없다. 중간 단계에서 --apply-log-only를 잊으면 이후 incremental을 사용할 수 없다. 복원 시 datadir은 비어 있어야 한다. --move-back은 디스크를 절약하지만 백업을 소모한다. 백업 사용자: BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT 및 performance_schema.log_status, keyring_component_status, replication_group_members에 대한 SELECT.

DBAtlas에서 열기 →

관련 항목