【MySQL】【备份】使用XtraBackup物理备份MySQL的流程

简介:

? XtraBackup包含两个主要的工具即:xtrabackup和innobackupex

? xtrabackup:只能备份InnoDB和XtraDB两种事务引擎的表,不支持备份非事务引擎的表。

? innobackupex:封装了xtrabackup的perl脚本,支持在全局读锁下的非事务表备份,支持无全局读锁下的事务表。

安装:

? 推荐安装percona公司的源然后yum安装

yum -y install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm
yum -y install percona-xtrabackup-24

innobackupex备份流程:

? 1.备份开始时先开启一个后台检测进程,实时监测redo的变化,一但发现redo中有新日志写入,立刻将日志记入其的后台日志文件(xtrabackup_log)中,

? 2.复制InnoDB表的数据文件,系统表空间文件ibdata1,完成后进入下一步,

? 3.执行全局读锁,锁住所有的表(事务,非事务),拷贝非事务表的文件(.frm .MYI .MYD),获取binlog位置,解锁全部表

? 4.停止xtrabackup_log,结束备份

阶段 解释
生成xtrabackup日志文件 软件本身开启一个用来保存redo的日志
拷贝InnoDB相关文件(.ibd表数据文件,ibdata1回滚空间)
FTWRL,全局读锁 非事务表不支持用事务保证一致性,需要读锁
拷贝innodb表结构文件frm,非事务表的全部文件
获取binlog位置 以此位置作为备份的全局位置
释放全局读锁 备份初步结束
停止xtrabackup的日志工作。 备份结束

? 备份语句:

innobackupex --defaults-file=/etc/my.cnf --user=bak --password=bak123 --stream=xbstream .|gzip cat ->xtrabak.xb.gz

?

innobackupex恢复流程:

? 启动XtraBackup软件包自带的InnoDB实例,回放xtrabackup过程中收集的xtrabackup_log:

? 根据binlog,回放binlog中已经登记,但redo中未提交但已经prepare的事务。

? 根据binlog,回滚binlog中未登记,但redo中已经prepare的事务

? 将应用好的文件拷回要被恢复实例的数据目录,赋予mysql用户的权限即可。

#解压
gunzip all.xb.gz -c|xbstream -x -C /data/full
#应用xtrabackup_log
innobackupex --apply-log --use-memory=1G /data/full
#拷回预备恢复的文件,也可以用手工拷贝代替
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/full
#将拷回的文件所有权赋给mysql用户
chown -R mysql.mysql /data/mysql/3306
#启动数据库
mysqld --defaults-file=/etc/my.cnf

附:

1.使用xbstream而不是tar的原因:

? 传统复制的情况下,从从库备份,需要获得从库的复制信息,可以使用--slave-info参数,这样复制信息会附加在备份文件包中,但是用tar的时候总是会截断一部分复制信息的描述文件。转用xbstream流传输后没有问题/另外,如果使用GTID,不考虑获取binlog file和pos的话,tar或者xbstream都可以接受。

2.不推荐使用增备的原因:

? 1.增备恢复步骤繁琐(需要在最后一个增备之前,只应用redo,最后一个才应用全部xtrabackup_log,拷回也麻烦)

? 2.与全备加binlogserver相比,不能恢复增备之间任意时间点的数据。

3.总的来看,XtraBackup仍是物理备份为主,辅以逻辑备份完成数据一致性的备份方式。

?

?

原文地址:http://blog.51cto.com/l0vesql/2070593

时间: 2024-07-31 02:02:26

【MySQL】【备份】使用XtraBackup物理备份MySQL的流程的相关文章

MySQL数据库之xtrabackup物理备份(一)

前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup. 一.Xtrabackup介绍 1.官网说明 Percona XtraBackup可以在不阻止用户查询的情况下实现MySQL备份,因此非常适合拥有大数据集和无法承受长时间停机的关键任务应用程序的公司.作为开源解决

XtraBackup物理备份 阿里云的Mysql备份方案

XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBackup,可以实现以下优势: 快速可靠地完成的备份 备份期间的不间断事务处理 节省磁盘空间和网络带宽 自动备份验证 创建热InnoDB备份,而不暂停数据库 对MySQL进行增量备份 将压缩的MySQL备份压缩到另一个服务器 在MySQL服务器之间移动表 轻松创建新的MySQL主从 备份MySQL,而不

XtraBackup物理备份(未测试)

XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBackup,可以实现以下优势: 快速可靠地完成的备份 备份期间的不间断事务处理 节省磁盘空间和网络带宽 自动备份验证 创建热InnoDB备份,而不暂停数据库 对MySQL进行增量备份 将压缩的MySQL备份压缩到另一个服务器 在MySQL服务器之间移动表 轻松创建新的MySQL主从 备份MySQL,而不

MariaDB xtrabackup物理备份与还原

xtrabackup物理备份 1.1 安装xtraback 安装依赖: [[email protected] ~]# yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio* 安装: [[email protected] ~]# rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm Preparing... #################################

MySQL生产库之Xtrabackup物理备份

在生产环境中,我们一般采取mysqldump全库备份,但这对于大型数据库是不可用的,因为mysqldump是逻辑备份,备份和恢复的效率缓慢,根据个人经验给出一个临界值的话,500G以下的数据库可以用mysqldump来进行全库备份,500G以上的数据库则需要物理全库备份,甚至是增量备份.Xtrabackup是物理备份,其备份速度也因其物理特性远超逻辑备份的速度,而且Xtrabackup就是为了逻辑备份而生的,接下来演示一下Xtrabackup是如何完成对数据库的全备和增备的. 一:首先我们安装x

mysql中的XtraBackup的备份原理

xtrabackup的官方下载地址为 : http://www.percona.com/software/percona-xtrabackup. xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: 1 xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表 2 innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要

mysql备份实战-Xtrabackup工具备份

导读 大数据量备份与还原,始终是个难点.当MYSQL超10G,用mysqldump来导出就比较慢了.这里介绍一个强大的开源工具Xtrabackup. Xtrabackup简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具,是商业备份工具InnoDB Hotbackup的一个很好的替代品.特点: (1)备份过程快速.可靠: (2)备份过程不会打断正在执行的事务: (3)能够基于压缩等

编译安装mysql和zabbix,xtrabackup数据库备份

xtrabackup参考文章 https://www.cnblogs.com/linuxk/p/9372990.html ? ? ? ? 下载5.7的mysql 社区版包 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar ? ? 如果是redhat7系统需要删除mariadb的包 使用以下命令检查并删除mariadb包 rpm -e --nodeps $(rpm -qa | gr

逻辑备份mysqldump和物理备份xtrabackup的流程

mysqldump备份原理 备份的基本流程如下: FLUSH TABLES 功能:关闭实例上所有打开表 目的:为第二步prepare,为了避免较长的事务操作造成FLUSH TABLES WITH READ LOCK操作迟迟得不到锁,但同时又阻塞了其它客户端操作 FLUSH TABLES WITH READ LOCK 功能:加全局读锁 目的:获得DB一致性状态 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 功能:设置当前会话的事务隔