阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

通过Xtrabackup日志来恢复检查点文件

233次阅读
没有评论

共计 2466 个字符,预计需要花费 7 分钟才能阅读完成。

最近积压了很多朋友的问题,我想起来的时候就回复一下,别见怪,不是我有势利眼。

前几天有个朋友问我的问题,是在 xtrabackup 的时候,没有特别保留 checkpoints 文件,想问问能否通过日志来推理得到里面的 LSN 信息呢,背景条件是做全备。

一个参考的日志如下:

171208 11:21:54 [01] Copying ./sbtest/dba_xtrabackupresult.frm to /data/backup/sbtest/dba_xtrabackupresult.frm

171208 11:21:54 [01] …done

171208 11:21:54 Finished backing up non-InnoDB tables and files

171208 11:21:54 [00] Writing /data/backup/xtrabackup_binlog_info

171208 11:21:54 [00] …done

171208 11:21:54 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS…

xtrabackup: The latest check point (for incremental): ‘ 3985406424’

xtrabackup: Stopping log copying thread.

….171208 11:21:55 >> log scanned up to (4060591382)

171208 11:21:55 >> log scanned up to (4060591382) 171208 11:21:55 Backup created in directory ‘/data/backup/’

MySQL binlog position: filename ‘mysqlbin.000017’, position ‘ 96607849’

171208 11:21:55 [00] Writing /data/backup/backup-my.cnf

171208 11:21:55 [00] …done

171208 11:21:55 [00] Writing /data/backup/xtrabackup_info

171208 11:21:55 [00] …done

xtrabackup: Transaction log of lsn (3597739074) to (4060591382) was copied.

171208 11:21:57 completed OK!

可以看到日志里面出现了很多的 LSN 的信息,首先是能够根据日志得到 LSN 的信息,然后是如果可以的话,这些 LSN 是如何做选择的。

我们必然要引入 xtrabackup 的原理和过程图

 

总体来说 xtrabackup 会通过物理拷贝的方式,然后来补充增量的数据变化。整个过程和 Oracle 的热备有些类似。日志中的信息相对来说还是很全的,作为参考是足够的。

然后如何恢复呢,我们需要知道有哪些 LSN 是需要的。

一般来说,一个 checkpoints 文件需要如下的 LSN 信息

[root@tk-dba-mysql10-202 backup]# cat *checkpoints

backup_type = full-backuped

from_lsn = xx

to_lsn = xx

last_lsn = xx

compact = 0

recover_binlog_info = 0

为了避免干扰,我做了一些过滤,可以看到基本是由 FROM_LSN,TO_LSN,LAST_LSN 组成的,如果是全备,from_lsn 应该是 0,如果数据库没有负载,或者在这个备份的过程中没有什么写入,那么 to_lsn 和 last_lsn 是一致的。

可是上面的日志很明显,是在数据库比较繁忙的情况下做的备份,所以产生了很多的临界点的 LSN, 所以通过这些细节就需要我们知道整个 xtrabackup 的过程中 LSN 的变化

我就不兜圈子了,通过模拟,得到的一个初步结论如下:

[root@tk-dba-mysql10-202 backup]# cat *checkpoints

backup_type = full-backuped

from_lsn = 0

to_lsn = 3985406424

last_lsn = 4060591382

compact = 0

recover_binlog_info = 0

这个过程是怎么模拟的呢,是在前端通过 sysbench 做压力测试,然后使用 xtrabackup 来备份。整个过程还是比较快的,大概半个小时内能够验证完成。

更多 XtraBackup 相关教程见以下内容

使用 Xtrabackup 进行 MySQL 备份  http://www.linuxidc.com/Linux/2016-11/137734.htm

Percona Xtrabackup 安装  http://www.linuxidc.com/Linux/2016-11/137735.htm

Percona XtraBackup 安装介绍篇   http://www.linuxidc.com/Linux/2017-07/145638.htm

使用 XtraBackup 备份 MySQL 数据库  http://www.linuxidc.com/Linux/2016-12/138688.htm

使用 Xtrabackup 进行 MySQL 数据库全备和全备还原  http://www.linuxidc.com/Linux/2016-11/137736.htm

XtraBackup 备份原理和实战详解  http://www.linuxidc.com/Linux/2017-04/142477.htm

Percona XtraBackup 实现全备 & 增量备份与恢复  http://www.linuxidc.com/Linux/2017-03/142380.htm

XtraBackup 备份原理和实战详解   http://www.linuxidc.com/Linux/2017-04/142477.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149704.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2466字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中