- 핫(온라인) 백업, 증분 및 차등 백업, 선택적 백업 및 복원, 클라우드 스토리지 백업 지원, 백업 암호화 및 압축과 같은 다양한 기능을 제공하는 다중 플랫폼, 고성능 도구
- 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
- InnoDB 데이터 파일, 리두 로그, 바이너리 로그, 릴레이 로그 파일(현재 사용 중인 로그 파일 제외)을 백업에 복사
- 서버 인스턴스에 백업 잠금
- DDL 작업(사용자 생성 임시 테이블에 대한 작업 제외)을 차단
- InnoDB 테이블에 대한 DML 작업(데이터베이스에 대한 관리 변경과 같이 바이너리 로그에 의해 캡처되지 않은 작업 제외)은 제외
- 데이터베이스에 대한 대부분의 읽기 및 쓰기 활동은 여전히 허용
- 모든 비 InnoDB 테이블에
FLUSH TABLES tbl_name [, tbl_name] ... WITH READ LOCK
명령어 적용
- InnoDB가 아닌 테이블이 데이터베이스에 없으면 이 단계를 건너뜀
- 현재 InnoDB LSN, 바이너리 로그 위치, GTID, 복제 소스 또는 복제본 상태 등과 같은 로깅 관련 정보를 수집할 수 있도록 서버에서 로깅 활동을 잠시 차단
- 비 InnoDB 테이블에 대한 읽기 잠금 해제
- 위의 4단계 정보를 이용하여 현재 사용 중인 바이너리 또는 릴레이 로그 파일의 해당 부분을 복사
- 1단계 이후 InnoDB 테이블에 대한 모든 최근 변경 사항이 백업에 캡처되어 나중에 원시 백업 데이터에 적용하여 복원된 서버를 일관된 상태로 만듬
- 서버 인스턴스의 백업 잠금 해제
- 이전에 복사되지 않은 리두 로그 파일과 백업을 위한 모든 메타데이터 파일이 복사되거나 생성
- 백업 작업이 완료되고 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';
- 기본 백업
$ 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
- 기본 파일
$ mysqlbackup --backup-dir=/data/backup/full/20211026 validate
- 이미지 파일
$ mysqlbackup --backup-image=/data/backup/full/20211026.mbi validate
- 기본 증분 백업
$ 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
- 복구 전 디렉토리 초기화 필수!
- 기본 백업 파일
<전체 백업>
$ 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