MySQL Enterprise Backup

JM·2021년 10월 26일
0

MySQL

목록 보기
10/10

🔨 MySQL Enterprise Backup

  • 핫(온라인) 백업, 증분 및 차등 백업, 선택적 백업 및 복원, 클라우드 스토리지 백업 지원, 백업 암호화 및 압축과 같은 다양한 기능을 제공하는 다중 플랫폼, 고성능 도구
  • InnoDB 테이블과 함께 사용하도록 최적화되어 있으면서 MySQL이 지원하는 모든 종류의 스토리지 엔진에서 생성된 모든 종류의 테이블을 백업 및 복원할 수 있음

🔨 설치

$ tar xvzf mysql-commercial-backup-x.y.z-linux-glibc2.12-x86_64.tar.xz -C /usr/local
$ PATH=$PATH:/usr/local/mysql-commercial-backup-8.0.27-linux-glibc2.12-x86_64/bin

🔨 백업 프로세스

  1. InnoDB 데이터 파일, 리두 로그, 바이너리 로그, 릴레이 로그 파일(현재 사용 중인 로그 파일 제외)을 백업에 복사
  1. 서버 인스턴스에 백업 잠금
    - DDL 작업(사용자 생성 임시 테이블에 대한 작업 제외)을 차단
    - InnoDB 테이블에 대한 DML 작업(데이터베이스에 대한 관리 변경과 같이 바이너리 로그에 의해 캡처되지 않은 작업 제외)은 제외
    - 데이터베이스에 대한 대부분의 읽기 및 쓰기 활동은 여전히 ​​허용
  1. 모든 비 InnoDB 테이블에 FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK 명령어 적용
    - InnoDB가 아닌 테이블이 데이터베이스에 없으면 이 단계를 건너뜀
  1. 현재 InnoDB LSN, 바이너리 로그 위치, GTID, 복제 소스 또는 복제본 상태 등과 같은 로깅 관련 정보를 수집할 수 있도록 서버에서 로깅 활동을 잠시 차단
  1. 비 InnoDB 테이블에 대한 읽기 잠금 해제
  1. 위의 4단계 정보를 이용하여 현재 사용 중인 바이너리 또는 릴레이 로그 파일의 해당 부분을 복사
    - 1단계 이후 InnoDB 테이블에 대한 모든 최근 변경 사항이 백업에 캡처되어 나중에 원시 백업 데이터에 적용하여 복원된 서버를 일관된 상태로 만듬
  1. 서버 인스턴스의 백업 잠금 해제
  1. 이전에 복사되지 않은 리두 로그 파일과 백업을 위한 모든 메타데이터 파일이 복사되거나 생성
  1. 백업 작업이 완료되고 mysqlbackup이 성공을 반환

🔨 사용자 권한

- 최소 권한
CREATE USER 'backup'@'localhost' IDENTIFIED BY 'backup1234';
GRANT SELECT, BACKUP_ADMIN, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'backup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE ON mysql.backup_progress TO 'backup'@'localhost';
GRANT CREATE, INSERT, DROP, UPDATE, SELECT, ALTER ON mysql.backup_history TO 'backup'@'localhost';

- 특정 기능 추가 사용시 권한
GRANT LOCK TABLES, CREATE, DROP, FILE, INSERT, ALTER ON *.* TO 'backup'@'localhost';
GRANT CREATE, DROP, UPDATE ON mysql.backup_sbt_history TO 'backup'@'localhost';
GRANT ENCRYPTION_KEY_ADMIN ON *.* TO 'backup'@'localhost';
GRANT INNODB_REDO_LOG_ARCHIVE ON *.* TO 'backup'@'localhost';

🔨 전체(Full) 백업

- 기본 백업
$ mysqlbackup --defaults-file=/etc/my.cnf --user=backup --password --host=localhost --backup-dir=/data/backup/full/20211026 backup

- 이미지 백업
$ mysqlbackup --defaults-file=/etc/my.cnf --user=backup --password --host=localhost --backup-image=/data/backup/full/20211026.mbi --backup-dir=/data/backup/full/20211026 backup-to-image

🔨 백업 무결성 확인(validate)

- 기본 파일
$ mysqlbackup --backup-dir=/data/backup/full/20211026 validate

- 이미지 파일
$ mysqlbackup --backup-image=/data/backup/full/20211026.mbi validate

🔨 증분(Incremental) 백업

- 기본 증분 백업
$ mysqlbackup --defaults-file=/etc/my.cnf --user=backup --password --host=localhost --incremental --incremental-base=dir:/data/backup/full/20211026 --incremental-backup-dir=/data/backup/inc/20211026 backup

- 이미지 증분 백업
$ mysqlbackup --defaults-file=/etc/my.cnf --user=backup --password --host=localhost --incremental --incremental-base=dir:/data/backup/full/20211026 --backup-dir=/data/backup/inc/20211026 --backup-image=/data/backup/inc/20211026.mbi backup-to-image

🔨 복구(Restore)

- 복구 전 디렉토리 초기화 필수!

- 기본 백업 파일

<전체 백업>
$ mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/data/backup/full/20211026 apply-log

<증분 백업>
$ mysqlbackup --defaults-file=/etc/my.cnf --incremental-backup-dir=/data/backup/inc/20211026 --backup-dir=/data/backup/full/20211026 apply-incremental-backup

<데이터 디렉토리로 복사>
$ mysqlbackup --defaults-file=/etc/my.cnf --datadir=/data/mysql/ --backup-dir=/data/backup/full/20211026 copy-back

- 이미지 파일 복구
<전체 백업>
$ mysqlbackup --defaults-file=/etc/my.cnf --datadir=/data/mysql --backup-image=/data/backup/full/20211026.mbi --backup-dir=/data/backup/tmp copy-back-and-apply-log

<증분 백업>
$ mysqlbackup --defaults-file=/etc/my.cnf --datadir=/data/mysql --backup-image=/data/backup/inc/20211026.mbi --backup-dir=/data/backup/tmp --incremental copy-back-and-apply-log

🔨 백업 파일 변경

- 백업 파일을 이미지 파일로 변경
$ mysqlbackup --backup-image=/data/backup/full/20211026.mbi --backup-dir=/data/backup/full/20211026 backup-dir-to-image

- 이미지 파일에서 백업 파일 추출
$ mysqlbackup --backup-image=/data/backup/full/20211026.mbi --backup-dir=/data/backup/full/20211026 extract

profile
오픈소스 DB엔지니어

0개의 댓글