Percona XtraBackup 증분 백업

8968 단어 mysqlxtrabackup
innobackupex를 사용하여 추가 백업
각 이노DB의 페이지에는 LSN 정보가 하나씩 담겨 있으며, 관련 데이터가 바뀔 때마다 관련 페이지의 LSN은 자동으로 증가한다.이것이 바로 InnoDB표가 증량 백업을 할 수 있는 기초이다. 즉, innobackupex는 백업이 지난번에 완전히 백업된 후에 변경된 페이지를 통해 이루어진다.
첫 번째 증분 백업을 수행하려면 다음 명령을 사용합니다.
innobackupex --incremental /backup --incremental-basedir=BASEDIR

그 중에서 BASEDIR는 완전히 백업된 디렉터리를 가리킨다. 이 명령이 실행된 후, innobackupex 명령은/backup 디렉터리에 시간 이름으로 새 디렉터리를 만들어서 모든 추가 백업 데이터를 저장한다.또한 증량 백업을 실행한 후에 다시 증량 백업을 진행할 때, incremental-basedir는 이전의 증량 백업이 있는 디렉터리를 가리켜야 한다.
주의해야 할 것은 증량 백업은 InnoDB나 XtradB 테이블에만 적용될 수 있고 MyISAM 테이블에서 증량 백업을 실행할 때 사실상 완전 백업을 하는 것이다.
'준비'(prepare) 증량 백업은 전체 백업을 정리하는 것과 약간 다르다. 특히 주의해야 할 것은 (1) 모든 백업(전체와 각 증량 백업을 포함)에서 이미 제출한 업무를'리셋'해야 한다는 것이다.재실행이 완료되면 모든 백업 데이터가 전체 백업에 통합됩니다.(2) 모든 백업을 기반으로 커밋되지 않은 트랜잭션을 롤백합니다.
따라서 작업은 다음과 같습니다.
innobackupex --apply-log --redo-only BASE-DIR

다음을 수행합니다.
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

두 번째 증가:
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

그 중에서 BASE-DIR는 완전 백업이 있는 디렉터리를 가리키고, INCREMENTAL-DIR-1은 첫 번째 증량 백업의 디렉터리를 가리키며, INCREMENTAL-DIR-2는 두 번째 증량 백업의 디렉터리를 가리키며, 다른 것은 순서대로 유추한다. 즉, 여러 번 증량 백업이 있으면 매번 위와 같은 조작을 해야 한다.
백업 프로세스:
전체 백업
mysql> create database week1;
Query OK, 1 row affected (0.00 sec)
mysql> use week1;
Database changed
mysql> create table test(name char(10) not null);
Query OK, 0 rows affected (0.06 sec)
mysql> insert into test (name) values ("kk01");
Query OK, 1 row affected (0.01 sec)
 
[root@bogon ~]# innobackupex --user=shiina --password=shiina /backup/
...
...
xtrabackup: The latest check point (for incremental): '2496292'
xtrabackup: Stopping log copying thread.
.160530 19:06:15 >> log scanned up to (2496301)
 
160530 19:06:15 Executing UNLOCK BINLOG
160530 19:06:15 Executing UNLOCK TABLES
160530 19:06:15 All tables unlocked
160530 19:06:15 [00] Copying ib_buffer_pool to /backup/2016-05-30_19-06-10/ib_buffer_pool
160530 19:06:15 [00]        ...done
160530 19:06:15 Backup created in directory '/backup/2016-05-30_19-06-10'
160530 19:06:15 [00] Writing backup-my.cnf
160530 19:06:15 [00]        ...done
160530 19:06:15 [00] Writing xtrabackup_info
160530 19:06:15 [00]        ...done
xtrabackup: Transaction log of lsn (2496292) to (2496301) was copied.
160530 19:06:15 completed OK!

1차 증분 백업
mysql> insert into test (name) values ("kk02");
Query OK, 1 row affected (0.02 sec)
[root@bogon ~]# innobackupex --user=shiina --password=shiina --incremental /backup/ --incremental-basedir=/backup/2016-05-30_07-04-31/
...
...
xtrabackup: Transaction log of lsn (2499531) to (2499540) was copied.
160530 19:08:27 completed OK!

2차 증분 백업
mysql> insert into test (name) values ("kk03");
Query OK, 1 row affected (0.02 sec)
[root@bogon ~]# innobackupex --user=shiina --password=shiina --incremental /backup/ --incremental-basedir=/backup/2016-05-30_07-05-32/
...
...
xtrabackup: Transaction log of lsn (2499709) to (2499718) was copied.
160530 19:09:40 completed OK!

변동분 백업 로깅 파일을 보려면 다음과 같이 하십시오.
[root@bogon backup]# cat 2016-05-30_19-06-10/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0 #        0
to_lsn = 2496292
last_lsn = 2496301
compact = 0
recover_binlog_info = 0
[root@bogon backup]# cat 2016-05-30_19-08-21/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 2496292
to_lsn = 2499531
last_lsn = 2499540
compact = 0
recover_binlog_info = 0
[root@bogon backup]# cat 2016-05-30_19-09-35/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 2499531
to_lsn = 2499709
last_lsn = 2499718
compact = 0
recover_binlog_info = 0

병합 준비:
[root@bogon ~]# innobackupex --apply-log --redo-only /backup/2016-05-30_19-06-10/
...
xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 2496310
InnoDB: Number of pools: 1
160530 19:10:49 completed OK!
[root@bogon ~]# innobackupex --apply-log --redo-only --incremental /backup/2016-05-30_19-06-10/ --incremental-dir=/backup/2016-05-30_19-08-21/
...
160530 19:35:54 completed OK!
[root@bogon ~]# innobackupex --apply-log --redo-only --incremental /backup/2016-05-30_19-06-10/ --incremental-dir=/backup/2016-05-30_19-09-35/
...
160530 19:36:38 completed OK!

Percona XtraBackup 에서 다음 명령 준비 (prepare) 와 같은 백업을 실행할 때 다음 오류를 보고합니다.
[root@bogon ~]# innobackupex --apply-log --redo-only --incremental /backup/2016-05-30_19-06-10/ --incremental-dir=/backup/2016-05-30_19-08-21/
...
...
InnoDB: File (unknown): 'read' returned OS error 114. Cannot continue operation
InnoDB: Cannot continue operation.

mysql 서비스를 정지하거나 서버를 다시 시작하면 해결할 수 있습니다
백업 로깅 파일을 다시 보려면 다음과 같이 하십시오.
[root@bogon backup]# cat 2016-05-30_19-06-10/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 2499709
last_lsn = 2499718 #          last_lsn           last_lsn    ,                     
compact = 0
recover_binlog_info = 0
[root@bogon backup]# cat 2016-05-30_19-08-21/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 2496292
to_lsn = 2499531
last_lsn = 2499540
compact = 0
recover_binlog_info = 0
[root@bogon backup]# cat 2016-05-30_19-09-35/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 2499531
to_lsn = 2499709
last_lsn = 2499718
compact = 0
recover_binlog_info = 0

복구 데이터:
[root@bogon backup]# service mysqld stop
Shutting down MySQL (Percona Server).. SUCCESS!
[root@bogon backup]# rm -rf /data/mysql/*
[root@bogon backup]# innobackupex --copy-back /backup/2016-05-30_19-06-10/
...
160530 19:42:31 completed OK
[root@bogon ~]# chown -R mysql:mysql /data/mysql/*
[root@bogon ~]# service mysqld start
Starting MySQL (Percona Server). SUCCESS!

테스트 데이터 무결성:
[root@bogon ~]# mysql -h127.0.0.1 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.11-4 Percona Server (GPL), Release 4, Revision 5c940e1
 
Copyright (c) 2009-2016 Percona LLC and/or its affiliates
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql> use week1;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
 
Database changed
mysql> select * from test;
+------+
| name |
+------+
| kk01 |
| kk02 |
| kk03 |
+------+
3 rows in set (0.00 sec)

보충: innobackup 상용 매개 변수 설명(전재)
--defaults-file와 xtrabackup의 --defaults-file 매개 변수
--apply-log의 xtrabackup에 대한 --prepare 매개 변수 봉인
--copy-back 데이터 복구 시 백업 데이터 파일을 MySQL 서버의 데이터dir로 복사합니다.
--remote-host=HOSTNAME은 ssh를 통해 백업 데이터를 프로세스 서버에 저장합니다.
--stream=[tar] 백업 파일 출력 형식, tar 시 tar4ibd를 사용합니다. 이 파일은 XtarBackup binary 파일에서 얻을 수 있습니다.백업할 때 지정한 stream=tar가 있다면 tar4ibd 파일이 있는 디렉터리는 $PATH에 있어야 합니다. (tar4ibd를 사용하여 압축을 하기 때문에 XtraBackup의binary 패키지에서 이 파일을 얻을 수 있습니다.)매개 변수stream=tar 백업을 사용할 때 xtrabackuplogfile는/tmp 디렉터리에 임시로 놓을 수 있습니다. 백업할 때 비교적 큰 크기의 xtrabackuplogfile은 매우 커질 수 있습니다. (5G +)/tmp 디렉터리를 가득 채울 수 있습니다. 인자 - tmpdir를 통해 디렉터리를 지정하면 이 문제를 해결할 수 있습니다.
--tmpdir=DIRECTORY 지정한 --remote-host or --stream이 있을 때 사무 로그를 임시로 저장하는 디렉터리
--redo-only --apply-log 그룹, 강제 백업 로그 시 redo만 롤백을 건너갑니다.이것은 증량 백업을 할 때 매우 필요하다.
--use-memory=# 이 매개 변수는prepare에서 사용하고,prepare를 제어할 때 innodb에서 사용하는 메모리 양
--throttle=IOS와 xtrabackup의 --throttle 매개 변수
--sleep = ibbackup에 사용되는 것으로 백업당 1M 데이터를 지정하고 프로세스가 몇 밀리초 동안 복사를 정지하는지를 지정하는 것도 백업할 때 정상적인 업무에 미치는 영향을 최소화하기 위해 구체적으로 ibbackup의 매뉴얼을 볼 수 있다.
--compress[=LEVEL]은 백업 데이터의 줄 압축을 ibbackup만 지원하고 xtrabackup은 아직 실현되지 않았다.
--include=REGEXP는 xtrabackup 매개 변수인 tables의 봉인에도 ibbackup을 지원합니다.백업에 포함된 라이브러리 테이블, 예를 들어 --include="test.",테스트 라이브러리에 있는 모든 테이블을 백업해야 한다는 뜻입니다.전체 백업이 필요하면 이 파라미터를 생략합니다.테스트 라이브러리 아래의 두 개의 표를 백업해야 합니다:test1과test2는 다음과 같습니다. --include = "test.test1 |test.test2".예를 들어 --include="test.test"와 같은 어댑터를 사용할 수도 있습니다.
--databases=LIST는 백업이 필요한 데이터베이스를 표시합니다. 이 인자가 지정되지 않으면 MyISAM과 InnoDB 테이블을 포함하는 모든 데이터베이스가 백업됩니다.
- uncompress에서 백업된 데이터 파일을 압축하여 ibbackup을 지원하고 xtrabackup은 아직 이 기능을 실현하지 못했다.
--slave-info, 백업은 라이브러리에서, 게다가 --slave-info 백업 디렉터리에서 xtrabackupslave_info 파일, 기본 로그 파일 및 오프셋이 저장됩니다. 파일 내용은 다음과 같습니다. CHANGE MASTER TO MASTERLOG_FILE='', MASTER_LOG_POS=0
-- socket=SOCKET mysql을 지정합니다.백업 프로세스가 mysql에 로그인할 수 있도록 sock이 있는 위치입니다.

좋은 웹페이지 즐겨찾기