innobackupex 还原和备份实例

时间:2021-03-23 00:38:29

InnoDB 和非 InnoDB 文件的备份都是通过拷贝文件来做的,但是实现的方式不同,前者是以page为粒度做的(xtrabackup),后者是 cp 或者 tar 命令(innobackupex),xtrabackup 在读取每个page时会校验 checksum 值,保证数据块是一致的,而 innobackupex 在 cp MyISAM 文件时已经做了flush(FLUSH TABLES WITH READ LOCK),磁盘上的文件也是完整的,所以最终备份集里的数据文件都是写入完整的。

当重新修改了MySQL的数据目录时:

重启报错:

Starting MySQL.The server quit without updating PID file (/[FAILED]l/mysql/data/ben.com.pid).

执行下列命令可以恢复:

1,chown -R mysql:mysql /usr/local/mysql/data
2,kill掉其他没有关闭的MySQL进程

  innobackupex 如果没有--host=127.0.0.1 参数,就会报错

 备份:

-- 备份全库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 /home/backup/ -- 增量全库
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --parallel=4 --host=127.0.0.1
--incremental-basedir=/home/backup/2017-03-07_14-27-24 --incremental /home/backup/ --流备份(tar压缩备份文件)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 --stream=tar /home/backup/ | gzip /home/backup/`date +%F_%H-%M-%S`.tar.gz --解压到指定目录 -C是大写 dd是目录,要保证有这个目录,不然会报错
tar -xvzf 2017-03-08_16-32-43.tar.gz -C /home/backup/dd
-- 建立软链接
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
--流压缩xbstream备份 (全部)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 --stream=xbstream --compress --extra-lsndir=/home/backup >/home/backup/bak_compress.xbstream --流压缩xbstream备份(增量)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --parallel=4 ---compress --incremental --extra-lsndir=/home/backup --incremental-basedir=/home/backup \>
--stream=xbstream >/home/backup/bak_compress_inc.xbstream

  

可以加快恢复的速度。

xtrabackup把备份过程中可能有尚未提交的事务或已经提交但未同步数据文件的事务,写到xtrabackup_logfile文件,所以要先通过这个日志文件回滚,把未完成的事务同步到备份文件,保证数据文件处于一致性。

[root@localhost 2017-07-29_12-34-51]# pwd
/opt/xtrabackup/2017-07-29_12-34-51
[root@localhost 2017-07-29_12-34-51]#innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /opt/xtrabackup_full/2017-07-29_12-34-51   --use-memory=4G --user=root --password=123456
如果执行正确,其最后输出的几行信息通常如下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1

xtrabackup: This target seems to be not prepared yet.

InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 20125736
170729 13:30:29 completed OK!

成功后,备份可以被用来还原数据库了

看到redo log已经出现。xtrabackup_开头的几个文件记录了一些日志偏移量的信息和日志名和时间等信息。在xtrabackup_checkpoints中记录了备份的模式:

backup_type = full-backuped。

xtrabackup_binlog_info:记录当前最新的LOG Position
xtrabackup_binlog_pos_innodb:innodb log postion
xtrabackup_checkpoints: 存放备份的起始位置beginlsn和结束位置endlsn,增量备份需要这个lsn[增量备份可以在这里面看from和to两个值的变化
xtrabackup_info:备份的一些具体信息日志

 还原:

 使用选项--apply-log:该选项将应用事务日志到数据文件,要回滚的事务回滚,提交的提交,进行数据的同步,还没开始恢复数据,是恢复前的准备工作

--全备份目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --apply-log --redo-only
/home/backup/2017-03-07_14-27-24 --全备份目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123 --host=127.0.0.1 --apply-log --redo-only
/home/backup/2017-03-07_14-27-24 --incremental-dir=/home/backup/2017-03-07_14-35-56

增量备份的prepare有点复杂,如果对base backup执行事务一致性恢复,则其不能再用于增量备份恢复,为此须指定redo-only选项;


innobackupex --apply-log --redo-only BASE-DIR


innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1


innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2


当合并完所有的增量备份后,开始回滚所有未提交的事务


innobackupex --apply-log BASE-DIR

 

innobackupex 还原和备份实例的更多相关文章

  1. Innobackupex(xtrabackup)物理备份

    1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...

  2. (4.16)mysql备份还原——物理备份之XtraBackup实践

    关键词:XtraBackup实践,物理备份,xtrabackup备份,innobackupex备份 [1]如何使用? [3]系列:innobackupex --help |more [4]系列:xtr ...

  3. DB2还原数据库备份

    用命令还原数据库备份 1.建立一个新的数据库db2 create db 数据库名 on 路径 using codeset GBK territory zh_CN 2.将需要恢复的数据库恢复得到这个新的 ...

  4. MySQL innobackupex全量备份恢复

    转自 http://blog.itpub.net/27099995/viewspace-1295099/ 先简单介绍一下这个工具:innobackupexinnobackupex比xtarbackup ...

  5. sqlserver2008r2还原完整备份和差异备份及自动删除过期备份

    本文主要内容: 还原完整和差异备份 删除超过1个月的备份 注:保证SQL Server代理服务启动,并把服务设置为自动启动 完整备份和差异备份还原原理: 差异备份是完整备份的补充,只备份上次完整备份后 ...

  6. oracle数据库还原以及备份 包括快速备份(并发压缩)

    expdp jhpt/XXXX directory=databackup dumpfile=dpfile_201512091300_%U.dmp filesize=5G parallel=8 comp ...

  7. SQL server 2005数据库的还原与备份

    一.SQL数据库的备份: 1.依次打开 开始菜单 → 程序 → Microsoft SQL Server 2005→SQL Server Management Studio ,这里我以UMVTEST命 ...

  8. (4.3)mysql备份还原——mysql备份策略

    (4.3)mysql备份还原——mysql备份策略 1.指定备份策略时需要考虑的点 [1.1]备份周期:2次备份间隔时长 [1.2]备份方式:在备份周期中,使用什么备份方式.备份模式 [1.3]实现方 ...

  9. sqlserver还原差异备份

    因为之前遇到还原差异备份,最开始遇到SQLServer报错:"无法还原日志备份或差异备份,因为没有文件可用于前滚".查阅很多资料后,终于得到解决.收集整理成这篇随笔. 问题原因:出 ...

随机推荐

  1. HTML5 五子棋 - JS/Canvas 游戏

    背景介绍 因为之前用c#的winform中的gdi+,java图形包做过五子棋,所以做这个逻辑思路也就驾轻就熟,然而最近想温故html5的canvas绘图功能(公司一般不用这些),所以做了个五子棋,当 ...

  2. OBIEE 11g:Error:nQSError 36010 Server version 318 cannot read the newer version of the repository

    biee11g升级到最新版以后,发现了一些bug,需要回退到原来的版本,卸载掉升级包以后,启动BI服务,会报上述错误.这是因为资料库文件已经升级为了最新版本.这时候我们需要将资料库文件进行降版本操作. ...

  3. hdoj 2083 简易版之最短距离

    简易版之最短距离 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  4. eclipse 使用maven 创建springmvc + mybatis

    接着eclipse 使用maven 创建纯spring mvc项目 毕竟项目都要访问数据库的, 所以加上mybatis的支持也就是网上大多时候说的 SSM框架的搭建(Spring + Spring M ...

  5. java保留两位小数(不四舍五入)

    import java.text.DecimalFormat; import java.math.RoundingMode; class Text{ public static void main(S ...

  6. vue.js实战——props数据验证(自定义构造器检测)

    Vue.component('my-component',{ props:{ //必须是数字类型 propA:Number, //必须是字符串或数字类型 propB:[String,Number], ...

  7. 【TensorFlow】:解决TensorFlow的ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败

    [背景] 在scikit-learn基础上系统结合数学和编程的角度学习了机器学习后(我的github:https://github.com/wwcom614/machine-learning),意犹未 ...

  8. 洛谷 P3241 [HNOI2015]开店 解题报告

    P3241 [HNOI2015]开店 题目描述 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱. 这样的想法当然非 ...

  9. 【LabVIEW技巧】LabVIEW中的错误1

    前言 前几日,小黑充电学习意外的看到了下面的这个东东. 编程许久竟然没有见过这样子的错误枚举,甚为好奇,问刘大后才知道是Error Ring,为此恶补一下LabVIEW中与错误处理相关的内容. 错误的 ...

  10. [转] JQuery UI Tabs 动态添加页签,并跳转到新页签

    [From] https://blog.csdn.net/zhangfeng2124/article/details/76672403 需求: 1.tabs默认只有一个页签,但是需要点击某按钮,动态添 ...