MySQL运维实战之备份和恢复(8.3)xtrabackup增量备份

俊达2年前技术文章1114

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


我们可以根据业务的具体情况,制定合适的备份策略。比如每周末进行一次全量备份,其他时间每天进行一次增量备份。


需要注意的是,恢复增量备份时,需要增量备份前的全量备份,以及该增量备份和全量备份之间的所有增量备份。

相关文章

MySQL运维实战之ProxySQL(9.4)proxysql和后端MySQL自动切换

MySQL运维实战之ProxySQL(9.4)proxysql和后端MySQL自动切换

如上图架构,当后端MySQL主库出现问题,发生主备切换后,如何自动将ProxySQL的读写切换到新的主库上?可以通过mysql_replication_hostgroups表配置实现:insert&n...

MySQL运维实战(4.8) SQL_MODE之NO_ENGINE_SUBSTITUTION

开启NO_ENGINE_SUBSTITUTION,建表时如果指定的存储引擎不可用或不存在,SQL报错。否则会使用默认的存储引擎替换。如果不设置NO_ENGINE_SUBSTITUTION,建表时指定的...

MySQL运维实战之备份和恢复(8.8)恢复单表

xtrabackup支持单表恢复。如果一个表使用了独立表空间(innodb_file_per_table=1),就可以单独恢复这个表。1、Prepareprepare时带上参数--export,xtr...

MySQL运维实战之ProxySQL(9.1)ProxySQL介绍

MySQL运维实战之ProxySQL(9.1)ProxySQL介绍

mysql通过复制技术实现了数据库高层面的可用,但是对于应用来说,当后端MySQL发生高可用切换时,应该怎么处理?我们考虑几种方案:1、使用域名绑定。应用通过dns连接后端实例,当后端发生切换后,将d...

MySQL运维实战(6)用户认证插件caching_sha2_password

MySQL用户认证可以使用几种不同的方式,创建用户时可以制定认证方式:create user 'username'@'%' identif...

MySQL运维实战之备份和恢复(8.4)xtrabackup恢复全量备份

恢复全量备份恢复全量备份大致可以分成以下几步:解压备份文件、prepare备份文件、将数据copy到目标实例相关目录、启动数据库实例。解压文件如果备份时使用了xbstream,需要先解压备份文件。我们...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。