MySQL_Xtrabackup数据备份与恢复

MySQL_Xtrabackup数据备份与恢复

    InnoDB 有个商业的InnoDB Hotbackup,可以对InnoDB引擎的表实现在线热备。而 percona出品的Xtrabackup,是InnoDB Hotbackup的一个开源替代品,可以在线对InnoDB存储引擎的表进行物理完全,增量和差异备份,MyISAM存储引擎的表只能进行完全备份。mysqldump支持在线备份,不过是逻辑备份,效率比较差。xtrabackup是开源的MySQL备份工具,物理备份,效率很不错。
    Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。Xtrabackup做备份的时候不能备份表结构、触发器等等,智能纷纷.idb数据文件。另外innobackupex还不能完全支持增量备份,需要和xtrabackup结合起来实现全备的功能。
    Xtrabackup:物理备份,速率快、可靠;备份完成后自动校验备份结果集是否可用;还原速度快
此文档实验使用percona-xtrabackup-24-2.4.7-2.el7.x86_64.rpm,使用yum安装。
编辑配置文件/etc/my.cnf,如下:
innodb_file_per_table=ON #使用单独表空间文件
skip_name_resolve=ON #跳过主机解析
log_bin=bin-log #启用二进制日志
编辑完成后启动mariaDB服务,进行备份操作。

备份策略:完全+增量+binlog
备份:使用innobackupex –help查看选项,man innobackupex查看使用方法
innobackupex --user=trauser --password=trapass --host=172.16.253.190 --databases=/var/lib/mysql  /data/backup/
--user:为数据库用户,保证该用户拥有备份的相关权限。
--databases指定备份的数据库,缺省表示全量备份。
最后出现一行completed OK!表示备份成功,备份成功后会在/data/backup目录下生成以备份时的时间命名的备份目录,如下:

这里写图片描述

修改数据库内容,新建xtratest1数据库,做增量备份。
innobackupex --user=trauser --password=trapass --host=172.16.253.190  --incremental-basedir=/data/backup/2017-07-14_08-23-13 --incremental /data/backup/
--incremental-basedir:基于那个数据备份做增量,一般是此次增量的前一个增量。
备份成功后,可查看备份目录下的xtrabackup_checkpoints的backup_type查看备份类型。
再次修改数据库,新建xtratest2数据库,做增量备份。
innobackupex --user=trauser --password=trapass --host=172.16.253.190  --incremental-basedir=/data/backup/2017-07-14_08-48-46 --incremental /data/backup/
查看备份文件:

这里写图片描述

再次做修改,新建xtratest3数据库,用作binlog时间点恢复,
修改完成后,模拟数据库服务down掉(stop),这里保留二进制日志文件,将数据库目录下的其它文件删除,
在生产环境中数据备份与相关日志要与应用中的数据库文件分主机存储,要保证不在同一磁盘上。

恢复:
准备prepare:
    --apply-log:进行恢复前的数据准备工作,使用“xtrabackup_logfile”的事务日志文件,在BACKUP-DIR中准备备份。
     创建新的事务日志。 InnoDB配置从“backup-my.cnf”文件中读取。
    --redo-only:二进制日志,有些事务已提交未同步,有些事务尚未提交,将已提交未同步的事务同步到数据库。
    未提交的事务不做处理,有可能在下一个增量备份内提交同步。
    --copy-back:复制以前制作的备份中的所有文件(已准备好的数据文件)
将全量备份按二进制日志做已提交同步,未提交不回滚
innobackupex --apply-log --redo-only /data/backup/2017-07-14_08-23-13
将全量备份与第一次增量备份合并按二进制日志做已提交同步,未提交不回滚
innobackupex  --apply-log --redo-only /data/backup/2017-07-14_08-23-13 --incremental-dir=/data/backup/2017-07-14_08-48-46
将已合并备份与第二次增量备份合并按二进制日志做已提交同步,未提交不回滚
innobackupex  --apply-log --redo-only /data/backup/2017-07-14_08-23-13 --incremental-dir=/data/backup/2017-07-14_08-58-40
将已合并完成的备份按二进制日志做已提交同步,未提交回滚
innobackupex  --apply-log  /data/backup/2017-07-14_08-23-13
恢复:
innobackupex  --copy-back /data/backup/2017-07-14_08-23-13
恢复成功后,数据库目录下会生产备份好的数据,设置已恢复的文件属主属组为mysql用户与组,
chown -R mysql.mysql /var/lib/mysql/*
启动mariaDB服务,查看数据库。

这里写图片描述

时间点恢复:
查看cat /data/backup/2017-07-14_08-23-13/xtrabackup_binlog_info

导出二进制日志位置为541至文件末尾的事务重定向到/data/backup/timepoint.sql脚本。
也就是说备份工作只备份到541位置结尾的事务,备份文件里没有541位置后事务,所以只能使用二进制日志恢复541位置后事务。
mysqlbinlog -j 541 bin-log.000001 > /data/backup/timepoint.sql

这里写图片描述

**注意:做完数据恢复,测试OK后,要对当前数据做一次全量备份。**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值