xtrabackup - (4) 백업 : incremental

2024. 11. 25. 13:56MySQL/Class

반응형

1. 전체(base) 백업

 

(1) 데이터 확인

 - 이 테이블은 추후 복구과정에서 어디까지 복구를 하였는지 체크를 하기 위함입니다.

전체 백업 시점에는 데이터가 없다

 

(2) 전체 백업

 - xbstream 은 percona에서 파일들을 묶어주는 기능을 제공 합니다. tar 와 같은 느낌입니다.

xtrabackup --defaults-file=/etc/my_5529.cnf --compress --user=root --backup --target-dir=/data/backup --socket=/tmp/mysql_5529.sock --stream=xbstream > /data/backup/base.xbstream
[root@mac18-02 data]# /mysql/xtrabackup/bin/xtrabackup --defaults-file=/etc/my_5529.cnf --compress --user=root --password='1234' --backup --target-dir=/data/backup --socket=/tmp/mysql_5529.sock --stream=xbstream > /data/backup/base.xbstream
xtrabackup: recognized server arguments: --datadir=/data/data_5529 --innodb_adaptive_hash_index=0 --innodb_io_capacity=400 --innodb_use_native_aio=1 --server-id=100 --log_bin=bin --
.
.
.
241120 15:15:10 [00] Compressing and streaming <STDOUT>
241120 15:15:10 [00]        ...done
xtrabackup: Transaction log of lsn (300621603) to (300621603) was copied.
241120 15:15:11 completed OK!

 

(3) 백업 파일 확인

 - base.xbstream 파일이 생성 되었습니다.

[root@mac18-02 data]# ls /data/backup
base.xbstream

 

2. 1차 증분백업

 

(1) 데이터 확인

 - 백업 이후에 실시간으로 작업이 이뤄지는 것을 가정하기 위해 데이터를 넣었습니다.

1차 증분 백업 시점에는 3건의 데이터가 있다

 

(2) base 백업 파일 압축 풀기

# xbstream 파일을 풀어줍니다.
xbstream -x < /data/backup/base.xbstream

# 풀어진 파일을 decompress를 합니다.
# --target-dir은 xbstream으로 풀린 파일들의 폴더를 지정해주면 됩니다.
xtrabackup --decompress --remove-original --target-dir=/data/base

 

 - xbstream으로 묶인 파일 풀기

[root@mac18-02 data]# cd /data/base
[root@mac18-02 base]# /mysql/xtrabackup/bin/xbstream -x < /data/backup/base.xbstream
[root@mac18-02 base]# ls
backup-my.cnf.qp  mysql               xtrabackup_binlog_info.qp
ibdata01.qp       percona             xtrabackup_checkpoints
ibdata02.qp       performance_schema  xtrabackup_info.qp
ibdata03.qp       test                xtrabackup_logfile.qp

 

- xbstream을 풀린 qp 압축 파일 풀기

[root@mac18-02 base]# /mysql/xtrabackup/bin/xtrabackup --decompress --remove-original --target-dir=/data/base
xtrabackup: recognized server arguments: 
xtrabackup: recognized client arguments: --decompress=1 --remove-original=1 --target-dir=/data/base 
/mysql/xtrabackup/bin/xtrabackup version 2.4.25 based on MySQL server 5.7.35 Linux (x86_64) (revision id: 90fe9d0)
241120 15:21:43 [01] decompressing ./ibdata01.qp
241120 15:21:44 [01] removing ./ibdata01.qp
241120 15:21:44 [01] decompressing ./ibdata02.qp
241120 15:21:46 [01] removing ./ibdata02.qp
241120 15:21:46 [01] decompressing ./ibdata03.qp
241120 15:21:47 [01] removing ./ibdata03.qp
.
.
.
241120 15:21:48 [01] decompressing ./xtrabackup_info.qp
241120 15:21:48 [01] removing ./xtrabackup_info.qp
241120 15:21:48 completed OK!

 

(3) 1차 증분 백업

xtrabackup --defaults-file=/etc/my_5529.cnf --compress --user=root --backup --socket=/tmp/mysql_5529.sock --target-dir=/data/backup --incremental-basedir=/data/base --stream=xbstream > /data/backup/inc1.xbstream
[root@mac18-02 base]# /mysql/xtrabackup/bin/xtrabackup --defaults-file=/etc/my_5529.cnf --compress --user=root --password='1234' --backup --socket=/tmp/mysql_5529.sock --target-dir=/data/backup --incremental-basedir=/data/base --stream=xbstream > /data/backup/inc1.xbstream
xtrabackup: recognized server arguments: --datadir=/data/data_5529 --innodb_adaptive_hash_index=0 --innodb_io_capacity=400 --innodb_use_native_aio=1 --server-id=100 --log_bin=bin --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_data_file_path=ibdata01:1024M;ibdata02:1024M;ibdata03:1024M:autoextend --innodb_write_io_threads=8 --innodb_read_io_threads=8 --innodb_doublewrite=0 --innodb_flush_log_at_trx_commit=2 --innodb_log_buffer_size=8M --innodb_log_file_size=1024M --innodb_log_files_in_group=3 --innodb_max_dirty_pages_pct=70 --innodb_flush_method=O_DIRECT 
.
.
.
241120 15:25:11 [00] Compressing and streaming <STDOUT>
241120 15:25:11 [00]        ...done
xtrabackup: Transaction log of lsn (300622535) to (300622535) was copied.
241120 15:25:12 completed OK!

 

(4) 백업파일 확인

 - inc1.xbstream 파일이 생성 되었습니다.

[root@mac18-02 base]# ls /data/backup
base.xbstream  inc1.xbstream

 

3. 2차 증분 백업

# 이전 백업본 압축을 풀고 그것을 기준으로 백업을 진행한 위 1차 증분 백업과 동일합니다.

 

(1) 데이터 확인

2차 증분 백업 시점에는 3건의 데이터가 추가 되었다.

 

(2) 1차 증분 백업 파일 압축 풀기

# 같은 폴더를 사용하기 위해서 앞서 압축푼 전체백업본 삭제 후에 작업을 진행하려고 합니다.
# 증분 백업을 할때는 마지막 백업본만 체크하여 또 다른 증분 백업을 하면 됩니다.
[root@mac18-02 base]# ls
backup-my.cnf  ibdata03  performance_schema      xtrabackup_checkpoints
ibdata01       mysql     test                    xtrabackup_info
ibdata02       percona   xtrabackup_binlog_info  xtrabackup_logfile
[root@mac18-02 base]# rm -rf *
[root@mac18-02 base]# ls
[root@mac18-02 base]# /mysql/xtrabackup/bin/xbstream -x < /data/backup/inc1.xbstream 
[root@mac18-02 base]# ls
backup-my.cnf.qp   ibdata03.delta.qp   test
ibdata01.delta.qp  ibdata03.meta       xtrabackup_binlog_info.qp
ibdata01.meta      mysql               xtrabackup_checkpoints
ibdata02.delta.qp  percona             xtrabackup_info.qp
ibdata02.meta      performance_schema  xtrabackup_logfile.qp

# 압축 풀기
[root@mac18-02 base]# /mysql/xtrabackup/bin/xtrabackup --decompress --remove-original --target-dir=/data/base
xtrabackup: recognized server arguments: 
.
.
.
241120 15:31:54 [01] decompressing ./backup-my.cnf.qp
241120 15:31:54 [01] removing ./backup-my.cnf.qp
241120 15:31:54 [01] decompressing ./xtrabackup_info.qp
241120 15:31:54 [01] removing ./xtrabackup_info.qp
241120 15:31:54 completed OK!

 

(3) 2차 증분 백업

[root@mac18-02 base]# /mysql/xtrabackup/bin/xtrabackup --defaults-file=/etc/my_5529.cnf --compress --user=root --password='1234' --backup --socket=/tmp/mysql_5529.sock --target-dir=/data/backup --incremental-basedir=/data/base --stream=xbstream > /data/backup/inc2.xbstream
xtrabackup: recognized server arguments: --datadir=/data/data_5529 --innodb_adaptive_hash_index=0 --innodb_io_capacity=400 --innodb_use_native_aio=1 --server-id=100 --log_bin=bin --innodb_file_per_table=1 --innodb_buffer_pool_size=500M --innodb_data_file_path=ibdata01:1024M;ibdata02:1024M;ibdata03:1024M:autoextend --innodb_write_io_threads=8 --innodb_read_io_threads=8 --innodb_doublewrite=0 --innodb_flush_log_at_trx_commit=2 --innodb_log_buffer_size=8M --innodb_log_file_size=1024M --innodb_log_files_in_group=3 --innodb_max_dirty_pages_pct=70 --innodb_flush_method=O_DIRECT 
.
.
.
241120 15:33:11 [00]        ...done
241120 15:33:11 [00] Compressing and streaming <STDOUT>
241120 15:33:11 [00]        ...done
xtrabackup: Transaction log of lsn (300623461) to (300623461) was copied.
241120 15:33:12 completed OK!

 

(4) 백업데이터 확인

 - inc2.xbstream 파일이 생성 되었습니다.

[root@mac18-02 base]# ls /data/backup
base.xbstream  inc1.xbstream  inc2.xbstream

 

4. 데이터 넣기

# 마지막으로 3건의 데이터를 더 넣었습니다.

# 백업이 전부 완료되고 계속 데이터는 넣어지고 있는 중이라고 가정하였습니다.

# 이것은 binlog를 통해 복구가 가능하다는 것을 확인시켜줄 내용입니다.

2차 증분 백업 이후 3건이 더 추가 되었다.

 

반응형

'MySQL > Class' 카테고리의 다른 글

xtrabackup - (5) 복구 : incremental  (0) 2024.11.26
xtrabackup - (3) qpress 설치  (0) 2024.11.24
xtrabackup - (2) 복구 : 기본편  (0) 2024.11.23
xtrabackup - (1) 백업 : 기본편  (0) 2024.11.22
Load Data : 파일 내용 넣기  (0) 2024.11.20