xtrabackup原理
常用命令
innobackupex --defaults-file=/data/mysql_3306/my.cnf --no-timestamp --slave-info --compress --compress-threads=2 --parallel=4 --user automng --host=127.0.0.1 --port=3358 --password Automng_123 /export/bak/d01
O_DIRECT,绕过缓冲区高速缓存,直接IO,OS级命令
更多参考:UNIX高级环境编程(14)文件IO - O_DIRECT和O_SYNC详解
涉及到的mysql理论绘制成一张图

LSN
mysql内存与磁盘的数据一致性问题
写数据前,会先写redo,写完redo就可以返回客户端说写成功了
后台线程定期将内存中的脏块刷新到磁盘
如果此时,断电停机,则mysql崩溃,内存有脏块还未来得及落盘,磁盘文件不完整,文件有损;再启动时就需要崩溃恢复
mysql 崩溃恢复
last checlpoint位置以前的数据不需要恢复了
崩溃恢复,恢复的是last checkpoint到记录在redo log文件中的数据
恢复的起点
在redo log 写入文件以及脏块刷新时,LSN会写入文件
在数据库启动时,会先扫描数据文件最大的LSN与redo log文件中最大的LSN是否一致,如果不一致,就需要对数据文件进行恢复
最大的LSN更专业的叫法就是,last checkpoint,扫描数据文件中的last checkpoint与redo 中的最大LSN是否一致
利用redo log文件恢复时,只需要扫描LSN > last checpoint位置的数据
恢复过程中的前滚与回滚
在redo中,一个完整的记录有三个标识,xid(事务结束后写入的事务标识), filename(binlog的文件名)、pos(binlog中的位点)
当然也是LSN,对应物理page的num等,但主要通过以上三个标识去确定是一个事务是该前滚,还是回滚
如果xid,filename,pos都在,就前滚
如果xid在,filename在,pos不在,就去binlogs确认事务是否已经在binlog中commit的,如果commit就前滚,没有commit就回滚。
如果xid在,filename也不在了,就去最后一个binlog中看看对应的xid是否已经提交,如果是则前滚,反之回滚。
恢复的过程
redo log文件记录并不是全部的数据,还需要数据文件、undo、binlog进行配合
找到redo log last checkpoint的位置
将相应的块从数据文件读到内存,先前滚,后回滚
备份命令
rm -rf /export/bak/d01
innobackupex --defaults-file=/data/mysql_3306/my.cnf --no-timestamp --slave-info --user automng --host=127.0.0.1 --port=3358 --password Automng_123 /export/bak/d01
d01这个目录不必提交创建好,会自动创建
xtrabackup原理概述
如果数据库中的所有文件,数据文件,Undo文件,redo log文件等,在备份完成后,进行一次崩溃恢复;
在备份一个数据文件时,会判断所备份的数据文件的LSN是否已经包含在redo中了,
比如redo的LSN写到了500,但数据文件的LSN才到480,则会等待log scan直接数据文件中的LSN大于等于500才会开始备份这个数据文件,
一定会等到现有的 物理数据文件 + 现有redo log文件 可以不丢数据地进行“前滚”的时候,才会开始备份这个数据文件(redo log文件一直在备份)
xtrabackup备份步骤
1. 持续备份redo log文件
2. 备份数据文件, ibd文件
3. flush tables with read lock
4. 备份表结构等除数据文件的其他文件
5. 获取binlog log position(由于已经加锁,期间整个数据库不会有事务变化,也是后续恢复的起点)
6. unlock tables
7. 停止备份redo log文件
xtrabackup原理的更多相关文章
- Xtrabackup原理及使用innobackupex进行MySQL数据库备份恢复
Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具. Xtrabackup中主要包含两个工 ...
- xtrabackup原理1
http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html Percona XtraBackup User Manual 阅读笔 ...
- XtraBackup 原理与安装
简介 XtraBackup(PXB) 工具是 Percona 公司用 perl 语言开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server ...
- xtrabackup原理,整库,单表,部分备份恢复
物理备份xtrabackup原理 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Pe ...
- XtraBackup原理解读
XtraBackup是现今为止唯一一款为InnoDB 和XtraDB提供热备的开源工具,这个工具有以下的有点: (1)备份快速高效而且可靠 (2)备份过程可以做到事物处理不间断 (3)节省磁盘空间和网 ...
- XtraBackup原理3
http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBa ...
- xtrabackup原理2
XTRABACKUP备份原理实现细节——对淘宝数据库内核月报补充 前言 淘宝3月的数据库内核月报对xtrabackup的备份原理做了深入的分析,写的还是很不错.不过Inside君在看完之后,感觉没有对 ...
- mysql备份工具 :mysqldump mydumper Xtrabackup 原理
备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低.衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(R ...
- xtrabackup原理、备份日志分析、备份信息获取
一. xtrabackup备份恢复工作原理: extrabackup备份简要步骤 InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,XtraBackup在备份的时候,以read ...
随机推荐
- docker+nginx搭建tomcat集群(附录)——nginx.conf文件
附录:nginx.conf修改后的文件内容 user root;worker_processes 2; #error_log logs/error.log;#error_log logs/error. ...
- 为什么不直接去Arraylist list = new Arraylist();而是直接通过List list = new ArrayList();使用接口的好处
ArrayList不是继承List接口,是实现了List接口. 你写成ArrayList arrayList = new ArrayList();这样不会有任何问题.和List list = new ...
- 华为开发者大会主题演讲:3D建模服务让内容高效生产
内容来源:华为开发者大会2021 HMS Core 6 Graphics技术论坛,主题演讲<3D建模服务使能3D内容高效生产>. 演讲嘉宾:华为消费者云服务 AI算法专家 3D建模服务(3 ...
- ajax - error
... <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...
- Three.js实现脸书元宇宙3D动态Logo
背景 Facebook 近期将其母公司改名为 Meta,宣布正式开始进军 元宇宙 领域.本文主要讲述通过 Three.js + Blender 技术栈,实现 Meta 公司炫酷的 3D 动态 Logo ...
- 【备忘】下载Oracle 8u202及之前的商用免付费版本JDK
访问地址: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 虽然是商用免付费版本,下载仍需 ...
- Atcoder Grand Contest 005 E - Sugigma: The Showdown(思维题)
洛谷题面传送门 & Atcoder 题面传送门 记先手移动棋子的树为红树,后手移动棋子的树为蓝树. 首先考虑一个性质,就是如果与当前红色棋子所在的点相连的边中存在一条边,满足这条边的两个端点在 ...
- 洛谷 P6478 - [NOI Online #2 提高组] 游戏(二项式反演+树形 dp)
题面传送门 没错这就是我 boom0 的那场 NOIOL 的 T3 一年前,我在 NOIOL #2 的赛场上折戟沉沙,一年后,我从倒下的地方爬起. 我成功了,我不再是从前那个我了 我们首先假设 A 拥 ...
- OpenFOAM 中 c++ 基础
文件布置 在 OpenFOAM 中,所有代码都以注释段开头,使用有限体积的 CFD 类型文件都包括以下头文件 #include "fvCFD.H" 在此头文件种,仅包含类或函数的定 ...
- C++ and OO Num. Comp. Sci. Eng. - Part 1.
本文参考自 <C++ and Object-Oriented Numeric Computing for Scientists and Engineers>. 序言 书中主要讨论的问题是面 ...