在线热备份数据库之innobackupex 增量备份InnoDB

什么是增量备份?其原理是什么?

增量备份是基于上一次备份后对新增加的内容进行备份,优点相较于完整备份而言备份内容少时间短,能够节省磁盘空间。但相较于完整备份而言可靠性有所降低,不能缺失基于完整备份的增量备份区间备份包,建议完整备份区间时间不可大于一周,通常情况下如果数据库非常庞大个人建议三天到七天完整备份一次,期间每天进行增量备份。如果数据库小那么每天进行完整备份才是最安全的选择。

增量备份原理是什么?他是如何记录上次备份的位置?

首先在InnoDB中, 每个page中都记录LSN信息,每当相关数据发生改变,page的LSN就会自动增加,xtrabackup的增量备份就是依据这一原理进行的。 我们增量备份必须要基于完整备份的前提下,在完整备份后会在备份目录中生成一个xtrabackup_checkpoints文件中记录了to_lsn= xxxx,下次备份就会从这里开始到结束,每次增量备份都需要指定上一次的增量备份的目录名,所以每次都从结束进行增量备份,恢复时将完整备份和增量备份1合并再与增量备份2合并再与增量备份N合并直到最后一次增量合并完成后,那么得到的就是完整备份数据,再进行完整数据的恢复。

  • 先对我的数据库做一次完整备份,不指定任何数据库也不使用时间最为备份子目录名。

    innobackupex -uroot -p12345 --user root --password 12345 /fullbackup --no-timestamp
  • 模拟创建新库新表模拟用户产生数据。

    mysql -uroot -p12345 -e "create database new1;"
    mysql -uroot -p12345 -e "create table new1.newtable1 (id int(10));"
    for i in {1..100};do mysql -uroot -p12345 -e "insert into new1.newtable1 values($i);" ;done
  • 然后进行增量备份,需要指定 --incremental 进行增量备份的目录 和 --incremental-basedir 完整备份的目录。

    innobackupex --user root --password 12345 --incremental /increback --incremental-basedir /fullbackup --no-timestamp
  • 然后再进行模拟用户向新创建的表产生数据。

    for i in {101..201};do mysql -uroot -p12345 -e "insert into new1.newtable1 values($i);" ;done
  • 然后再使用增量备份进行备份,这里需要注意的就是--incremental-basedir指定的目录就是上一次增量备份的目录了。

    innobackupex --user root --password 12345 --incremental /increback2 --incremental-basedir /increback --no-timestamp
  • 因为去比较上一次备份的结束位置进行新的备份,看一下第一次到最后一次增量备份的位置。

    ---------从0备份到4158368-----------------------------------------
    backup_type = full-backuped
    from_lsn = 0
    to_lsn = 4158368
    last_lsn = 4158377
    compact = 0
    recover_binlog_info = 0
    ---------从4158368备份到4197299-----------------------------------
    backup_type = incremental
    from_lsn = 4158368
    to_lsn = 4197299
    last_lsn = 4197308
    compact = 0
    recover_binlog_info = 0
    --------从4197299备份到4232734------------------------------------
    backup_type = incremental
    from_lsn = 4197299
    to_lsn = 4232734
    last_lsn = 4232743
    compact = 0
    recover_binlog_info = 0
    ----------------------------------------------------------------
    #就和之前说的一样每次备份完成后的重点都是下一次备份的起点。
  • 开是准备恢复数据(一般情况下恢复到另外一台机器上去,然后备份区间丢失的部分数据通过binlog进行恢复,我这边就备份相关文件,直接删掉目录进行恢复了。

  • 第一件事就是将完整备份与第一次增量备份合并再与第二次增量备份合并再与第N次增量备份合并。

    innobackupex --apply-log --redo-only /fullbackup
    innobackupex --apply-log --redo-only /fullbackup --incremental-dir /increback
    innobackupex --apply-log --redo-only /fullbackup --incremental-dir /increback2
  • 整合备份后将数据库服务停掉打包数据库默认路径下的所有文件备份到其/home目录去然后删掉下面所有的东西。

    systemctl stop mysqld && tar -zcvPf /home/mysqldatadir.tar.gz /var/lib/mysql && rm -rf /var/lib/mysql/*
  • 然后进行拷贝恢复。

    innobackupex --copy-back /fullbackup/
  • 因为是使用root用户操作的所有属主和属组都是root,所以需要改为mysql。

    chown -R  mysql:mysql /var/lib/mysql
  • 启动服务并检查数据是否正常。

    systemctl start mysqld
    mysql -uroot -p12345 -e "select * from new1.newtable1;"
  • 期间出现的部分数据丢失可以通过结合binlog进行恢复。

在线热备份数据库之innobackupex 增量备份InnoDB的更多相关文章

  1. 在线热备份数据库之innobackupex 完整备份InnoDB

    在线热备份数据库innobackupex 完整备份InnoDB XtraBackup xtrabackup C程序,支持InnoDB/XtraDB innobackupex : 以Perl脚本封装xt ...

  2. MySQL数据库如何实现增量备份

    1 .通过SHOW VARIABLES LIKE '%log_bin%';查看数据库是否开启增量备份log_bin=ON则为开启log_bin=OFF则为关闭 2 .修改mysql配置文件mysql. ...

  3. xtrabackup之Innobackupex增量备份及恢复

    演示增量备份 #启动一个全备 innobackupex \ > --defaults-/my.cnf \ > --host=127.0.0.1 \ > --user=xtrabk \ ...

  4. MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

    粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...

  5. Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

    xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...

  6. Xtrabackup全量 增量备份详解

    xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...

  7. xtra+binlog增量备份脚本

    目录 一.备份原理 innobackupex原理 binlog原理 特点 备份策略 二.环境准备 开启binlog 创建授权用户 安装innobackupex 三.添加脚本 全量备份 增量备份 bin ...

  8. xtrabackup实现全量备份和增量备份

    mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/i ...

  9. 12C-使用跨平台增量备份减少可移动表空间的停机时间 (Doc ID 2005729.1)

    12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 20057 ...

随机推荐

  1. Maven私服Nexus的搭建

    # Maven私服Nexus的搭建 ## 私服存在的合理性 Maven中的依赖是从服务器仓库中下载的,Maven的仓库只有两大类: - 1) 本地仓库 - 2) 远程仓库,其中在远程仓库中又分成了3种 ...

  2. Openshift创建Router和Registry

    Openshift创建Router和Registry: [root@DockerServer openshift]# oadm policy add-scc-to-user privileged sy ...

  3. Android适配总结

    1.dp与px的 密度类型 代表的分辨率 屏幕密度 换算 比例 低密度(ldpi) 240x320 120 1dp=0.75px 3 中密度(mdpi) 320x480 160 1dp = 1px 4 ...

  4. SpringBootSecurity学习(24)前后端分离版之OAuth2.0 应用登记

    应用登记 一个应用要求 OAuth 授权,必须先到对方网站登记,让对方知道是谁在请求.举个例子,下面是github的登记页面: https://github.com/settings/applicat ...

  5. day 23

    目录 面向对象总复习 面向对象总复习 面向过程编程思想: ​ 核心是过程,过程指的是做事情的步骤,即先干什么再干什么. ​ 基于该编程思想编程,就好比一条流水线,一种机械式的思维方式. 面向对象编程思 ...

  6. 解决window.onload延迟加载问题

    window.onload方法,表示当页面所有的元素都加载完毕,并且所有要请求的资源也加载完毕才触发执行function这个匿名函数里边的具体内容.这样肯定保证了代码在domReady之后执行.使用w ...

  7. Docker的安装及加速器配置

    简介 Docker是一个开源项目 ,其主要目标是实现轻量级的操作系统虚拟化解决方案.Docker的基础是Linux容器(LXC)等技术.在LXC的基础上Docker进行了进一步的封装,让用户不需关心容 ...

  8. shark恒破解笔记6-摆脱NAG

    1.打开软件后,发现是未注册,然后点击关闭按钮,会弹出窗口 我们的目的就是为了能够去掉这个弹窗. 2.对这个程序进行查壳,没有什么发现 3.载入OD里面,F9运行起来,随后切换到程序主界面点击关闭按钮 ...

  9. Vuex使用总结

    Vuex 是什么? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vuex的五个核心概念 ...

  10. QuartzCode快速开发动画代码工具

    QuartzCode快速开发动画代码工具 QuartzCode一款快速,轻量,强大的动画工具,可快速得到原生的ObjC/Siwft代码 我可以用QuartzCode做什么? 应用程序演练动画 动画菜单 ...