xtrabackup은 percona에서 제공하는 mysql 백업 도구로, 데이터베이스에 연결하여 데이터베이스 데이터를 백업하는 물리적인 백업 도구입니다. innodb 스토리지 엔진의 경우 전체 백업과 증분 백업을 지원합니다. myisam 스토리지 엔진은 증분 백업만 지원합니다. xtrabackup의 innodb 증분 백업은 테이블 공간의 LSN을 기반으로 하기 때문에 소위 LSN은 테이블 공간이 여러 데이터 블록으로 분할된다는 의미입니다. 각 데이터 블록은 해당 시퀀스 번호를 갖습니다. 일련번호가 업데이트되었습니다. 전체 백업은 모든 데이터 블록을 백업하는 것을 의미하며, 증분 백업은 전체 백업에서 마지막 데이터 블록의 일련번호를 기준으로 최신 데이터 블록의 일련번호로 백업하는 것을 의미합니다. myisam은 테이블스페이스를 지원하지 않기 때문에 증분 백업을 수행할 수 없습니다.
Xtrabackup은 percona에서 제공하는 mysql 데이터베이스 백업 도구이며, 공식 소개에 따르면 이는 innodb 및 xtradb 데이터베이스의 핫 백업을 수행할 수 있는 세계 유일의 오픈 소스 도구이기도 합니다.
Xtrabackup에는 주로 두 가지 도구가 포함되어 있습니다.
xtrabackup: innodb 및 xtradb 테이블의 데이터를 핫 백업하는 도구입니다.
innobackupex: xtrabackup을 수행하는 데 사용됩니다. 캡슐화된 Perl 스크립트는 MyISAM 테이블과 데이터 테이블 구조를 백업하고 복원할 수 있습니다.
centos7 가상 머신, mariadb-5.5.52 버전의 데이터베이스 설치, 먼저 학생 데이터 테이블이 포함된 SQL 스크립트를 통해 hellodb 테스트 라이브러리를 가져옵니다. 이 실험은 학생을 대상으로 수행됩니다. table, 명령은 다음과 같습니다.
mysql -uroot < hellodb.sql
xtrabackup_binlog_info: 바이너리 로그의 내용을 기록합니다.
mysql -uroot < hellodb.sql
安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:,此处不再演示安装过程;
xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;
数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:
xtrabackup_binlog_info:记录二进制日志的内容;
xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;
xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;
xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;
首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;
通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:innobackupex -u root /data/backup
文件夹内容如下:
此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚 innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下
show 전역 변수(예: 'log_bin';
)를 사용하여 활성화되었는지 확인하세요.innobackupex -u root /data/backup
innobackupex --apply-log 2017-07-13_21-02-07/ #첫 번째 트랜잭션 로그 커밋 및 롤백 innobackupex --copy-back 2017-07 - 13_21-02-07/ #데이터 복구를 수행하면 데이터가 mysql 데이터 디렉터리에 자동으로 복원됩니다.
🎜🎜🎜🎜복구 성공 후 복구된 데이터의 모든 소유자와 그룹은 루트 사용자이므로 루트 사용자여야 합니다. 수정되었습니다. 데이터베이스에 로그인하려면 mysql 사용자여야 합니다. 🎜🎜🎜🎜 데이터베이스에 로그인하면 모든 데이터가 복원된 것을 볼 수 있습니다. 🎜🎜🎜🎜🎜이번에는 증분 백업 및 복구 작업을 시연합니다. 🎜🎜🎜🎜🎜프로덕션 환경에서는 바이너리 로그와 데이터 파일을 다른 디스크에 배치하는 것이 좋습니다. 가능한 한 많은 손실을 보장하기 위한 시간 복구 데이터가 적고 바이너리 파일도 손실되면 잠재적으로 많은 데이터 손실이 발생합니다.데이터 복구 작업이 완료된 후 데이터 보안을 보장하기 위해 데이터 전체 백업을 수행해야 합니다.
몇 가지 새로운 정보를 데이터베이스에 삽입한 다음 증분 백업을 수행합니다.
다음 명령을 사용하여 데이터베이스의 증분 백업을 수행하면 /data/backup 디렉터리에 time이라는 이름의 새 폴더가 생성됩니다. innobackupex -u root - p 1234567a --incremental -- Incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/
innobackupex -u root -p 1234567a --incremental --incremental-basedir=/data/backup/2017-07-13_21-07-23/ /data/backup/
然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ #进行全量备份的事务提交,但是不回滚未提交事务,因为未提交事务可能在下次的增量备份中提交 innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22-18-34/ #进行增量备份和全备份的合成已经事务提交工作 innobackupex --apply-log 2017-07-13_22-16-19/ #对于全备份也没有完成的事务进行回滚操作 innobackupex --copy-back 2017-07-13_22-16-19/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作
innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ # 전체 백업을 위해 트랜잭션을 커밋하지만 커밋되지 않은 트랜잭션은 롤백하지 않습니다. 커밋되지 않은 트랜잭션은 다음 증분 백업에 제출할 수 있기 때문입니다. innobackupex --apply-log --redo-only 2017-07-13_22-16-19/ --incremental-dir=2017-07-13_22 -18-34/ #증분 백업 수행 전체 백업으로 트랜잭션 제출 작업 합성 innobackupex --apply-log 2017-07-13_22-16-19/ #전체 백업에서 완료되지 않은 트랜잭션에 대한 롤백 작업 innobackupex --copy- back 2017-07-13_22- 16-19/ #이때, 전체백업을 이용하여 데이터를 복원할 수 있으며, 백업합성작업이 이루어졌기 때문에 더 이상 증분백업이 필요하지 않습니다
위 내용은 xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!