MySQL运维实战之备份和恢复(8.3)xtrabackup增量备份
xtrabackup支持增量备份。在做增量备份之前,需要先做一个全量备份。xtrabackup会基于innodb page的lsn号来判断是否需要备份一个page。如果page lsn大于上次备份的lsn号,就需要备份该page。
1、先进行一次全量备份。
xtrabackup --backup --slave-info -u root -H 127.0.0.1 -P3380 \ -pabc123 --stream=xbstream --target-dir /data/backup/full \ --extra-lsndir=/data/backup/full \ 2>/data/backup/full/backup_full.log | gzip - > /data/backup/full/backup_full.gz
备份命令加上了--extra-lsndir选项,将xtrabackup_checkpoints单独输出到文件。增量备份时需要根据xtrabackup_checkpoints中的lsn。
相关文件:
# ls -l /data/backup/full 总用量 2996 -rw-r--r-- 1 root root 3014835 6月 25 16:35 backup_full.gz -rw-r--r-- 1 root root 40313 6月 25 16:35 backup_full.log -rw-r--r-- 1 root root 134 6月 25 16:35 xtrabackup_checkpoints -rw-r--r-- 1 root root 673 6月 25 16:35 xtrabackup_info
2、发起增量备份
mkdir /data/backup/inc1 xtrabackup --backup --slave-info -u root -H 127.0.0.1 -P3380 \ -pabc123 --stream=xbstream --target-dir /data/backup/inc1 \ --extra-lsndir=/data/backup/inc1 \ --incremental-basedir=/data/backup/full \ 2>/data/backup/inc1/backup_inc1.log | gzip - > /data/backup/inc1/backup_inc1.gz
--incremental-basedir:全量备份或上一次增量备份xtrabackup_checkpoints文件所在目录
增量备份也可以在上一次增量备份的基础上进行:
mkdir /data/backup/inc2 xtrabackup --backup --slave-info -u root -H 127.0.0.1 -P3380 \ -pabc123 --stream=xbstream --target-dir /data/backup/inc2 \ --extra-lsndir=/data/backup/inc2 \ --incremental-basedir=/data/backup/inc1 \ 2>/data/backup/inc2/backup_inc2.log | gzip - > /data/backup/inc2/backup_inc2.gz
我们可以根据业务的具体情况,制定合适的备份策略。比如每周末进行一次全量备份,其他时间每天进行一次增量备份。
需要注意的是,恢复增量备份时,需要增量备份前的全量备份,以及该增量备份和全量备份之间的所有增量备份。