> 데이터 베이스 > MySQL 튜토리얼 > xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침

xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침

巴扎黑
풀어 주다: 2017-07-19 11:32:03
원래의
1186명이 탐색했습니다.

xtrabackup은 percona에서 제공하는 mysql 백업 도구로, 데이터베이스에 연결하여 데이터베이스 데이터를 백업하는 물리적인 백업 도구입니다. innodb 스토리지 엔진의 경우 전체 백업과 증분 백업을 지원합니다. myisam 스토리지 엔진은 증분 백업만 지원합니다. xtrabackup의 innodb 증분 백업은 테이블 공간의 LSN을 기반으로 하기 때문에 소위 LSN은 테이블 공간이 여러 데이터 블록으로 분할된다는 의미입니다. 각 데이터 블록은 해당 시퀀스 번호를 갖습니다. 일련번호가 업데이트되었습니다. 전체 백업은 모든 데이터 블록을 백업하는 것을 의미하며, 증분 백업은 전체 백업에서 마지막 데이터 블록의 일련번호를 기준으로 최신 데이터 블록의 일련번호로 백업하는 것을 의미합니다. myisam은 테이블스페이스를 지원하지 않기 때문에 증분 백업을 수행할 수 없습니다.

Xtrabackup은 percona에서 제공하는 mysql 데이터베이스 백업 도구이며, 공식 소개에 따르면 이는 innodb 및 xtradb 데이터베이스의 핫 백업을 수행할 수 있는 세계 유일의 오픈 소스 도구이기도 합니다.

Xtrabackup에는 주로 두 가지 도구가 포함되어 있습니다.

xtrabackup: innodb 및 xtradb 테이블의 데이터를 핫 백업하는 도구입니다.

innobackupex: xtrabackup을 수행하는 데 사용됩니다. 캡슐화된 Perl 스크립트는 MyISAM 테이블과 데이터 테이블 구조를 백업하고 복원할 수 있습니다.


    xtrabackup에서 백업한 데이터는 데이터 복구를 수행 중입니다. 이전에 다음 사항에 주의해야 합니다.
  • 증분 백업이 있는 경우 증분 백업과 전체 백업을 병합해야 합니다.
  • 트랜잭션을 지원하는 테이블의 백업인 경우 복원하기 전에 먼저 트랜잭션 로그의 롤백 및 커밋 작업을 수행해야 합니다.
  • 연속 백업이 있는 경우. 작업을 수행하려면 트랜잭션 로그만 커밋하면 되고 롤백할 필요는 없습니다. 트랜잭션 롤백은 모든 백업 작업이 통합된 후에만 수행할 수 있습니다.

  • 이 문서에서는 자세한 실험 단계를 통해 xtrabackup을 사용하는 방법을 보여줍니다.
실험 단계

  1. centos7 가상 머신, mariadb-5.5.52 버전의 데이터베이스 설치, 먼저 학생 데이터 테이블이 포함된 SQL 스크립트를 통해 hellodb 테스트 라이브러리를 가져옵니다. 이 실험은 학생을 대상으로 수행됩니다. table, 명령은 다음과 같습니다.

    mysql -uroot < hellodb.sql
  2. xtrabackup을 설치하려면 공식 홈페이지에서 설치 패키지를 다운로드한 후 yum을 통해 설치하면 됩니다. 다운로드 사이트는 다음과 같습니다. 설치 프로세스
  3. 백업 및 복구의 주요 명령:


xtrabackup_binlog_info: 바이너리 로그의 내용을 기록합니다.

  1. xtrabackup_checkpoints: 백업 유형, 시작 및 종료 lsn 번호와 같은 정보


    mysql -uroot < hellodb.sql

  2. 安装xtrabackup,可以从官方网站下载安装包,然后通过yum进行安装,下载站点为:,此处不再演示安装过程;

  3. xtrabackup的主要命令为innobackupex,通过innobackupex --help或者man手册可以获取到帮助信息;

  4. 数据库已经导入,此时可以进行数据库的备份操作,先进行数据库的全量备份和恢复:

  • xtrabackup_binlog_info:记录二进制日志的内容;

  • xtrabackup_checkpoints:记录备份类型,开始和结束的lsn编号等备份信息;

  • xtrabackup_info:记录更详细的备份信息,如是否为所有库备份,是否压缩,备份执行的命令等信息;

  • xtrabackup_logfile:记录的是事务日志,为二进制文件,不可查看;

  1. 首先确保数据库已经开启二进制日志,通过show global variables like 'log_bin';命令可以看到是否已经开启,通过show binary logs;可以看到目前正在使用的二进制日志是哪一个;

  2. 通过xtrabackup进行备份,数据备份到/data/backup目录下,备份完成会在指定目录下生成一个以当前时间命名的文件夹:
    innobackupex -u root /data/backup

  3. 文件夹内容如下:
    xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침

  4. 此时就备份成功了,然后演示数据库的恢复操作。注意:恢复之前需要首先停止数据库服务:
    innobackupex --apply-log 2017-07-13_21-02-07/ #首先进行事务日志的提交和回滚     innobackupex --copy-back 2017-07-13_21-02-07/ #进行数据恢复,会自动把数据恢复到mysql的数据目录下

    xtrabackup_info: 모든 라이브러리 백업 여부, 압축 여부, 백업에서 실행된 명령 및 기타 정보와 같은 보다 자세한 백업 정보를 기록합니다.
  5. xtrabackup_logfile: 바이너리 파일이며 볼 수 없는 트랜잭션 로그를 기록합니다.
    1. First; 데이터베이스에서 바이너리 로그가 활성화되었는지 확인하세요.

      show 전역 변수(예: 'log_bin';

      )를 사용하여 활성화되었는지 확인하세요.
    2. show 바이너리 로그를 사용하면 현재 어떤 바이너리 로그가 있는지 확인할 수 있습니다.
  6. xtrabackup을 통한 백업. 백업이 완료되면 지정된 디렉터리에 현재 시간 이름의 폴더가 생성됩니다:
  7. innobackupex -u root /data/backup
    • 폴더 내용은 다음과 같습니다. 🎜xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침🎜🎜🎜🎜이 시점에서는 백업이 성공한 후 데이터베이스 복구 작업을 시연합니다. 참고: 복구하기 전에 먼저 데이터베이스 서비스를 중지해야 합니다. 🎜innobackupex --apply-log 2017-07-13_21-02-07/ #첫 번째 트랜잭션 로그 커밋 및 롤백 innobackupex --copy-back 2017-07 - 13_21-02-07/ #데이터 복구를 수행하면 데이터가 mysql 데이터 디렉터리에 자동으로 복원됩니다.🎜🎜🎜🎜복구 성공 후 복구된 데이터의 모든 소유자와 그룹은 루트 사용자이므로 루트 사용자여야 합니다. 수정되었습니다. 데이터베이스에 로그인하려면 mysql 사용자여야 합니다. 🎜🎜🎜🎜 데이터베이스에 로그인하면 모든 데이터가 복원된 것을 볼 수 있습니다. 🎜🎜🎜🎜🎜이번에는 증분 백업 및 복구 작업을 시연합니다. 🎜🎜🎜🎜🎜프로덕션 환경에서는 바이너리 로그와 데이터 파일을 다른 디스크에 배치하는 것이 좋습니다. 가능한 한 많은 손실을 보장하기 위한 시간 복구 데이터가 적고 바이너리 파일도 손실되면 잠재적으로 많은 데이터 손실이 발생합니다.
    • 데이터 복구 작업이 완료된 후 데이터 보안을 보장하기 위해 데이터 전체 백업을 수행해야 합니다.

    1. 몇 가지 새로운 정보를 데이터베이스에 삽입한 다음 증분 백업을 수행합니다.

    2. 다음 명령을 사용하여 데이터베이스의 증분 백업을 수행하면 /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/

    3. 然后停掉数据库服务,删除数据库目录下的所有数据,进行数据恢复操作,步骤如下:
      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/ #此时采用全备份即可恢复数据,不再需要增量备份,因为已经进行了备份的合成操作

    4. 그런 다음 데이터베이스 서비스를 중지하고, 데이터베이스 디렉터리를 설정하고 데이터 복구 작업을 수행하는 경우 단계는 다음과 같습니다.

      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/ #이때, 전체백업을 이용하여 데이터를 복원할 수 있으며, 백업합성작업이 이루어졌기 때문에 더 이상 증분백업이 필요하지 않습니다

    5. 역시 복원된 데이터의 소유자와 그룹을 수정한 후 데이터베이스에 로그인하면 전체 데이터를 볼 수 있습니다.
    주의:🎜🎜🎜🎜

    위 내용은 xtrabackup을 사용하여 mysql 데이터베이스를 백업하는 방법에 대한 지침의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿