MySQL 백업 · 3 min read · Dec 13, 2025

Percona XtraBackup로 Ubuntu 16.04에서 MySQL 데이터베이스의 핫 백업 수행하기

Percona XtraBackup는 MySQL을 위한 오픈 소스 백업 유틸리티입니다. Percona Server, MariaDB 및 (Oracle) MySQL과 같은 모든 MySQL 버전을 지원합니다. Percona Xtrabackup은 MySQL에 대한 핫 백업을 수행합니다. 핫 백업은 다운타임 없이 MySQL 서버가 실행 중일 때 백업을 생성하는 것을 의미합니다.

이 튜토리얼에서는 Ubuntu 16.04 (Xenial Xerus)에서 오픈 소스 도구인 Percona XtraBackup을 사용하여 핫 MySQL 데이터베이스 백업을 생성하는 방법을 보여드리겠습니다. 백업을 수행하기 위해 MariaDB를 데이터베이스 서버로 사용할 것이지만, 동일한 설정은 MySQL 서버에서도 작동합니다.

전제 조건

  • Ubuntu 서버 16.04 - (Xenial Xerus)
  • MySQL 또는 MariaDB 서버
  • 루트 권한

1단계 - Percona XtraBackup 설치하기

첫 번째 단계는 Ubuntu 서버에 최신 Percona XtraBackup 소프트웨어를 설치하는 것입니다. SSH(또는 콘솔)로 서버에 로그인합니다:

ssh [email protected]  
비밀번호 입력

Percona XtraBackup은 Ubuntu 저장소에서 사용할 수 있지만, 우리는 Percona 저장소에서 최신 버전을 사용하고자 합니다.

웹에서 deb 패키지를 다운로드하여 Percona 저장소를 추가하고 dpkg 명령으로 설치합니다:

wget https://repo.percona.com/apt/percona-release_0.1-3.$(lsb_release -sc)_all.deb  
sudo dpkg -i percona-release_0.1-3.$(lsb_release -sc)_all.deb

다음으로, 저장소를 업데이트하고 Percona XtraBackup 2.4(현재 최신 버전)를 설치합니다:

sudo apt-get update  
sudo apt-get install percona-xtrabackup-24

Percona XtraBackup이 설치되었습니다.

2단계 - 사용자 및 백업 디렉토리 구성하기

핫 백업을 수행하기 위해 특별한 권한과 권한을 가진 새로운 mysql 사용자를 생성해야 합니다. 이 튜토리얼에서는 MariaDB 10.0을 데이터베이스 서버로 사용할 것입니다. MySQL 호환 데이터베이스를 아직 설치하지 않았다면 아래 명령으로 설치할 수 있습니다:

sudo apt-get install mariadb-server mariadb-client

루트 사용자에 대한 안전한 비밀번호를 설정합니다:

mysql_secure_installation

MariaDB가 설치되었다면, mysql 클라이언트 명령으로 루트 사용자로 MariaDB/MySQL 셸에 접근합니다:

mysql -u root -p  
MySQL 비밀번호 입력

bekupuser ‘라는 새로운 사용자와 ‘ mypassword ‘라는 비밀번호를 생성합니다(서버에 대한 안전한 비밀번호를 선택하세요!):

CREATE USER 'bekupuser'@'localhost' IDENTIFIED BY 'mypassword';

사용자에게 다음 권한을 부여합니다: ‘RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT’.

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'bekupuser'@'localhost';  
FLUSH PRIVILEGES;  
exit

다음으로, MySQL 백업 파일을 저장할 새로운 디렉토리를 생성합니다:

mkdir -p /data/backups/mysql/

새로운 백업 사용자와 백업 디렉토리가 생성되었습니다.

3단계 - Innobackupex로 백업 수행하기

Innobackupex는 xtrabackup 프로그램을 위한 Perl 스크립트 래퍼입니다. 이는 Oracle에서 제공하는 innobackup 스크립트의 패치된 버전으로, InnoDB 백업 도구와 함께 배포됩니다. Innobackupex는 xtrabackup을 xbstream 및 xbcrypt와 결합하여 전체 MySQL 데이터베이스 인스턴스에 대한 백업을 제공합니다.

이 단계에서는 MySQL 인스턴스에 대한 전체 백업을 생성하고 준비합니다.

A. Innobackupex로 백업 생성하기

2단계에서 우리는 백업을 위한 새로운 디렉토리를 만들고 새로운 mysql 백업 사용자를 추가했습니다. 이제 이를 사용하여 innobackupex 명령으로 백업을 생성합니다.

‘/data/backups/my_backup’라는 새로운 디렉토리에 innobackupex로 MySQL 백업을 생성합니다:

innobackupex --user=bekupuser  --password=mypassword --no-timestamp /data/backups/my_backup

참고:

–user = 필요한 백업 권한이 있는 사용자(2단계).

–password = 백업 사용자의 비밀번호.

–no-timestamp = 백업 루트 디렉토리에 새로운 타임스탬프 하위 디렉토리 생성을 비활성화합니다.

/data/backups/my_backup = 백업을 위한 디렉토리로, 백업 프로세스 중에 자동으로 생성됩니다. 디렉토리가 존재하면 오류 메시지가 표시됩니다.

Percona XtraBackup로 백업 생성하기

또 다른 옵션:

mkdir -p /data/backups/my_backup2  
  
innobackupex --user=bekupuser --password=mypassword /data/backups/my_backup2  
  
or  
innobackupex --user=bekupuser --password=mypassword /data/backups/

참고:

my_backup2 ‘라는 디렉토리가 없으면, ‘ timestamp ‘ 형식에 따라 디렉토리가 생성됩니다.

결과:

B. Innobackupex로 전체 백업 준비하기

새로운 백업을 생성한 후, 데이터는 복원할 준비가 되어 있지 않습니다. 데이터를 복원할 수 있도록 준비 단계가 하나 더 필요합니다.

백업 디렉토리 ‘/data/backups/my_backup ‘에 대해 innobackupex를 사용하여 백업을 준비합니다:

innobackupex --apply-log /data/backups/my_backup

진행하기 전에 프로세스가 오류 없이 완료되었는지 확인합니다.

전체 백업 준비하기

충분한 메모리와 큰 데이터베이스가 있는 경우, –use-memory=memorynumber 옵션을 사용하여 innobackupex가 사용할 수 있는 메모리 양을 지정할 수 있습니다:

innobackupex --apply-log --use-memory=4G /data/backups/my_backup

이제 데이터가 복원할 준비가 되었습니다. 동일한 서버나 MariaDB가 실행 중인 다른 서버에 복원할 수 있습니다.

4단계 - Innobackupex로 전체 백업 복원하기

이 단계에서는 innobackupex로 MySQL 인스턴스를 복원합니다.

MySQL 인스턴스를 복원하기 전에 systemctl 명령으로 MySQL 프로세스를 중지해야 합니다(마리아DB 프로세스는 mysql이라고 이름 붙여져 있습니다):

systemctl stop mysql

기존 MySQL 데이터 디렉토리의 백업을 만듭니다:

mkdir ~/mysql_old/  
mv /var/lib/mysql/* ~/mysql_old/

다음으로, innobackupex로 전체 백업에서 mysql 인스턴스를 복원합니다:

innobackupex --copy-back /data/backups/my_backup

innobackupex: completed OK ‘라는 결과가 표시되면 MySQL 인스턴스가 성공적으로 복원된 것입니다.

이제 MySQL 데이터 디렉토리의 소유자를 mysql 사용자로 변경하고 서비스를 다시 시작합니다:

chown -R mysql:mysql /var/lib/mysql  
systemctl start mysql

백업 복원하기

Percona XtraBackup으로 MySQL 인스턴스가 성공적으로 복원되었습니다.

참고

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.