请选择 进入手机版 | 继续访问电脑版
 
如何使用Xtrabackup进行物理备份恢复_云数据库_数据备份_数据库 ...
VIEW CONTENTS
摘要: Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。

如何使用Xtrabackup进行物理备份恢复

数据存储与数据库云数据库数据库备份
摘要 云数据库,数据备份,数据库Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。


(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>

背景

RDS使用mysqldump对 MySQL 数据库进行逻辑全量备份,使用开源软件Xtrabackup进行物理全量备份,是实例级别的备份。本文主要从原理的角度来介绍MySQL数据库的备份和恢复,让用户更加了解RDS的备份恢复机制。

 

一、使用Mysqldump进行逻辑备份

 

mysqldump作为重要的MySQL备份工具,功能相当强大。备份参数、恢复策略,需要仔细研究。

备份数据库:

备份单个数据库或单个数据库中的指定表:

mysqldump [OPTIONS] database [tb1] [tb2]…

备份多个数据库:

mysqldump [OPTIONS] –databases [OPTIONS] DB1 [DB2 DB3...]

备份所有数据库:

mysqldump [OPTIONS] –all-databases [OPTIONS]

 

二、使用Xtrabackup进行物理备份恢复

Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。

 

备份数据库:

 

如果在程序启动阶段未指定模式,innobackupex将会默认以备份模式启动。

默认情况下,此脚本以–suspend-at-end选项启动xtrabackup,然后xtrabackup程序开始拷贝InnoDB数据文件。当xtrabackup程序执行结束,innobackupex将会发现xtrabackup创建了xtrabackupsuspended2文件,然后执行FLUSH TABLES WITH READ LOCK,此语句对所有的数据库表加读锁,然后开始拷贝其他类型的文件。

如果–ibbackup未指定,innobackupex将会自行尝试确定使用的xtrabackup的binary。其确定binary的逻辑如下:首先判断备份目录中xtrabackup_binary文件是否存在,如果存在,此脚本将会依据此文件确定使用的xtrabackup binary。否则,脚本将会尝试连接database server,通过server版本确定binary。如果连接无法建立,xtrabackup将会失败,需要自行指定binary文件。

在binary被确定后,将会检查到数据库server的连接是否可以建立。其执行逻辑是:建立连接、执行query、关闭连接。若一切正常,xtrabackup将以子进程的方式启动。

FLUSH TABLES WITH READ LOCK是为了备份MyISAM和其他非InnoDB类型的表,此语句在xtrabackup已经备份InnoDB数据和日志文件后执行。在这之后,将会备份 .frm, .MRG, .MYD, .MYI, .TRG, .TRN, .ARM, .ARZ, .CSM, .CSV, .par, and .opt 类型的文件。

当所有上述文件备份完成后,innobackupex脚本将会恢复xtrabackup的执行,等待其备份上述逻辑执行过程中生成的事务日志文件。接下来,表被解锁,slave被启动,到server的连接被关闭。接下来,脚本会删掉xtrabackupsuspended2文件,允许xtrabackup进程退出。

 

三、使用innobackupex备份数据库

 

完全备份:

innobackupex –user=root -p /home/backup/

备份后的文件:在备份的同时,备份数据会在备份目录下创建一个以当前日期时间为名字的目录存放备份文件。

3ee15287bc59a98d5cca01b5d9bf4efa4e8d880b

各文件说明:

(1) backup-my.cnf —— 备份命令用到的配置选项信息;

02872f3dec1195cbb4caa96afd50f5d88d9dd79c

(2) ibdata —— 备份的表空间文件;

(3) xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

f71a503e38c50e14536d2d02154f9fad06994a62

(4) xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置;

67e13e2da44c0e7cc6512f56c11cb36caddeb042

(5) xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;

b71ac53b033dd8199c9b32023a46ff6e9ee1ece0

(6) xtrabackup_logfile —— 备份的重做日志文件。

在使用innobackupex进行备份时,还可以使用–no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

 

准备(prepare)一个完全备份

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

 

innobakupex命令的–apply-log选项可用于实现上述功能。

innobackupex –apply-log /home/backup/2014-05-03_17-21-11/

 

执行成功,显示如下:

4a8781a0b7bcbc031d3558a7db80d21020194882

 

在实现“准备”的过程中,innobackupex通常还可以使用–use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。

本文中提到的产品
云数据库 云服务器 相关文章
  • 快开启阿里云对象存储 OSS 防误删新功能--版本控制,保护您珍贵的数据
  • 以“术”彰“道”,用匠心做技术—对话阿里云 MVP刘洪峰
  • MySQL进阶篇(02):索引体系划分,B-Tree结构说明
  • MySQL并行复制
  • 小时候我们都想当科学家,只有他做到了——对话阿里云 MVP朱祺
  • 阿里云正式推出云数据库Redis 6.0版本,全球首发极速上线!
  • 阿里云荣膺MongoDB年度最佳ISV伙伴奖,首个共建特性上线MongoDB最新版 ​
  • 2020年便宜购买阿里云服务器攻略(阿里云小站篇)
  • 海鼎ERP全面兼容阿里云PolarDB数据库 可帮零售企业成本下降50%
  • 【云栖号直播】阿里云618大促必看:揭开阿里云建站背后的云计算应用秘籍!

鲜花

握手

雷人

路过

鸡蛋
2020-6-26 12:07| 发布者: xtyly| 查看: 37| 评论: 0

在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

zuntop公众号

Copyright   ©2015-2019  尊托云数  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号 )