웹사이트 검색

Ubuntu 16.04에서 Percona XtraBackup을 사용하여 MySQL 데이터베이스의 핫 백업 수행


이 페이지에서

  1. 1단계 - Percona XtraBackup 설치
  2. 2단계 - 사용자 및 백업 디렉토리 구성
  3. 3단계 - Innobackupex로 백업 수행\n
  4. 4단계 - Innobackupex로 전체 백업 복원
  5. 참조

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

이 튜토리얼에서는 Ubuntu 16.04(Xenial Xerus)에서 OpenSource 도구 Percona XtraBackup을 사용하여 핫 MySQL 데이터베이스 백업을 생성하는 방법을 보여줍니다. MariaDB를 데이터베이스 서버로 사용하여 백업을 수행하지만 동일한 설정이 MySQL 서버에서도 작동합니다.

전제 조건

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

1단계 - Percona XtraBackup 설치

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

ssh 
TYPE YOUR PASSWORD

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

다음으로 저장소를 업데이트하고 Ppercona 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
TYPE MySQL PASSWORD

mypassword 암호를 사용하여 bekupuser라는 새 사용자를 만듭니다(서버에 대한 보안 암호 선택!).

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 스크립트 래퍼입니다. InnoDB 백업 도구와 함께 배포되는 Oracle에서 제공하는 innobackup 스크립트의 패치 버전입니다. Innobackupex는 xbstream 및 xbcrypt와 함께 xtrabackup을 사용하여 전체 MySQL 데이터베이스 인스턴스에 대한 백업을 제공합니다.

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

A. Innobackupex로 백업 생성

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

innobackupex를 사용하여 새 디렉터리 /data/backups/my_backup에 MySQL 백업을 만듭니다.

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

메모:

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

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

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

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

다른 옵션:

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로 전체 백업 준비

새 백업을 생성한 후 데이터를 복원할 준비가 되지 않았습니다. 데이터를 복원할 준비가 되도록 한 단계가 더 있습니다. 데이터를 복원하려면 준비 단계가 필요합니다.

--apply-log 옵션과 함께 innobackupex를 사용하여 백업 디렉터리 /data/backups/my_backup에 백업을 준비합니다.

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 프로세스를 중지해야 합니다(MariaDB 프로세스의 이름은 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

MySQL 인스턴스가 percona-xtrabackup으로 성공적으로 복원되었습니다.

참조

  • https://www.percona.com/doc/percona-xtrabackup/2.3/index.html