在线热备份数据库之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进行恢复。
在线热备份数据库之innobackupex 增量备份InnoDB的更多相关文章
- 在线热备份数据库之innobackupex 完整备份InnoDB
在线热备份数据库innobackupex 完整备份InnoDB XtraBackup xtrabackup C程序,支持InnoDB/XtraDB innobackupex : 以Perl脚本封装xt ...
- MySQL数据库如何实现增量备份
1 .通过SHOW VARIABLES LIKE '%log_bin%';查看数据库是否开启增量备份log_bin=ON则为开启log_bin=OFF则为关闭 2 .修改mysql配置文件mysql. ...
- xtrabackup之Innobackupex增量备份及恢复
演示增量备份 #启动一个全备 innobackupex \ > --defaults-/my.cnf \ > --host=127.0.0.1 \ > --user=xtrabk \ ...
- MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出
粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...
- Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份
xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...
- Xtrabackup全量 增量备份详解
xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有开源,免费,支持在线热备,备份恢复速度快,占用磁盘空间小等特点,并且支持不同情况下的多种备份 ...
- xtra+binlog增量备份脚本
目录 一.备份原理 innobackupex原理 binlog原理 特点 备份策略 二.环境准备 开启binlog 创建授权用户 安装innobackupex 三.添加脚本 全量备份 增量备份 bin ...
- xtrabackup实现全量备份和增量备份
mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/i ...
- 12C-使用跨平台增量备份减少可移动表空间的停机时间 (Doc ID 2005729.1)
12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 20057 ...
随机推荐
- ELK日志分析系统(3)-logstash数据处理
1. 概述 logspout收集数据以后,就会把数据发送给logstash进行处理,本文主要讲解logstash的input, filter, output处理 2. input 数据的输入处理 支持 ...
- 强大得分布式项目管理工具Git
---恢复内容开始--- 强大的分布式管理工具-Git(一) 前言:最近忙着写项目,在期间呢,用的是git管理,由于一个项目的管理是很重要得,所以整理了一篇关于git得博客跟大家分享一下.大家都知道, ...
- 解决MVC中Model上的特性在EF框架刷新时清空的问题
MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因 ...
- css3——box-sizing属性
很多朋友们可能会疑惑,不知道box-sizing属性是有什么作用,自己也很少会用到,但是想必不少人在做网页布局的时候经常遇到一个问题就是我明明设置了父元素设置了假如是宽高500px,5个子元素左浮动设 ...
- Java零基础手把手系列:HashMap排序方法一网打尽
HashMap的排序在一开始学习Java的时候,比较容易晕,今天总结了一些常见的方法,一网打尽.HashMap的排序入门,看这篇文章就够了. 1. 概述 本文排序HashMap的键(key)和值(va ...
- postman常用断言
1.Code is 200 断言状态码是200 2.contains string 断言respoonse body中包含string 3.json value check (检查JSON值)
- 设置Linux支持中文
1.首先在command输入locale,可以看到Linux下默认的系统语言的是英文 2.vim ~/.bashrc打开这个文件,该文件夹相当于系统配置文件 3.打开后,将后三行命令输入到文档中,最后 ...
- dll劫持破坏360
0x01 前言 说起DLL劫持技术,相信大家都不会陌生,因为这种技术的应用比较广泛,比如木马后门的启动.破解程序的内存补丁.外挂插件的注入以及加密狗的模拟等.之所以DLL劫持技术深受黑客们的喜爱,主要 ...
- 中国.NET开发者峰会特别活动-基于k8s的微服务和CI/CD动手实践报名
2019.11.9 的中国.NET开发者峰会将在上海举办,到目前为止,大会的主题基本确定,这两天就会和大家会面,很多社区的同学基于对社区的信任在我们议题没有确定的情况下已经购票超过了300张,而且分享 ...
- 程序猿的产品思考:2C与2B产品思维的区别
原创/朱季谦 我最早接触到互联网产品的时候,听到最多的,是做产品要有用户思维,即站在用户角度去看待产品.这个先入为主的概念,在很长一段时间里,都被我效作经典.然而也在很长一段时间里,我竟混淆了其中 ...