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

在线热备份数据库之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进行恢复。

原文地址:https://www.cnblogs.com/lqinghua/p/11682097.html

时间: 2024-10-05 05:41:50

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

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

在线热备份数据库innobackupex 完整备份InnoDB XtraBackup xtrabackup C程序,支持InnoDB/XtraDB innobackupex : 以Perl脚本封装xtrabackup,还支持MyISAM 个人建议由innobackupex增量/完整 + binlog 基本上可以满足小型企业需求 percona-xtrabackup安装部署 依赖库:libev.so 安装依赖事件库 libev 安装percona-xtrabackup 常用选项 含义 - - ho

xtrabackup之Innobackupex增量备份及恢复

演示增量备份 #启动一个全备 innobackupex > --defaults-file=/mysql/mysqldata/3306/my.cnf > --host=127.0.0.1 > --user=xtrabk > --password='onlybackup' /mysql/mysqldata/backup/ ............ 160527 05:47:55 innobackupex: completed OK! [[email protected] mysqld

xtrabackup2.4 备份Precona5.6数据库,做增量备份与还原

1.Full backuop,一定要先做:     innobackupex --defaults-file=/etc/my.cnf --user=root --password=evlink /home/mysql/backup/2.Incremental backup,可以每隔一小时或者三小时做一次:    innobackupex --defaults-file=/etc/my.cnf --user=root --password=evlink --incremental /home/my

数据库单表增量备份方案

方案1: 对于一个表来说,我们要实现备份最简单的方法就是直接备份,这张表包括数据与结构直接备份,这种情况对已小的数据库表来说是行的通的,但是这种方法存在一些问题:例如,如果这个表的数据很大呢?达到上G.几G.几十个G之类的,这样的话备份的时候很占资源和时间,所以,我觉得这样的备份不值得推荐. 所以针对上面的问题,我用触发器来实现,具体思路如下: 1.  假设现在有一个表mytest需要做备份,然后有mytest_backup表来保存备份的数据,然后这两个表的结构是一样的: 例如: mytest:

innobackupex增量备份

第一次全局备份 innobackupex --defaults-file=/etc/my.cnf --uesr=root [email protected] --host=127.0.0.1  /home/backup/full_dir 第一次增量 innobackupex --defaults-file=/etc/my.cnf --uesr=root [email protected] --host=127.0.0.1  /home/backup/full_dir --incremental-

mysql innobackupex增量备份

备忘

xtrabackup 全备份,增量备份,恢复 mysql数据库

Xtrabackup使用指南 InnoDB数据备份工具 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写,也就是不加锁),是商业备份工具InnoDB Hotbackup的一个很好的替代品 一.Xtrabackup介绍  A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具

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

粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损坏的数据进行恢复和还原保证数据不丢失,最小程度地丢失需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 --备份与恢复概述 根据备份的方法可以分为: 1.Hot Backup(热备) 2.Cold Backup(冷备) 3.Warm Backup(温备) Hot Backup是指

Xtrabackup 增量备份、恢复、原理

整合了网上的一些资料,结合自己的理解,并进行了实验验证 理解一: 1,Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex (1).xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 (2). innobackupex是参考了In