当前位置: 首页 > 编程日记 > 正文

Xtrabackup实现数据的备份与恢复

Xtrabackup介绍
Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁);mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合。
Xtrabackup安装完成后有4个可执行文件,其中2个比较重要的备份工具是innobackupex、xtrabackup
1)xtrabackup 是专门用来备份InnoDB表的,和mysql server没有交互;
2)innobackupex 是一个封装xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。
3)xbcrypt 加密解密备份工具
4)xbstream 流传打包传输工具,类似tar

Xtrabackup优点

1)备份速度快,物理备份可靠
2)备份过程不会打断正在执行的事务(无需锁表)
3)能够基于压缩等功能节约磁盘空间和流量
4)自动备份校验
5)还原速度快
6)可以流传将备份传输到另外一台机器上
7)在不增加服务器负载的情况备份数据

Xtrabackup备份原理
备份原理
备份开始时首先会开启一个后台检测进程,实时检测mysq redo的变化,一旦发现有新的日志写入,立刻将日志记入后台日志文件xtrabackup_log中,之后复制innodb的数据文件一系统表空间文件ibdatax,复制结束后,将执行flush tables with readlock,然后复制.frm MYI MYD等文件,最后执行unlock tables,最终停止xtrabackup_log
输出如下提示信息

xtrabackup: Transaction log of lsn (2543172) to (2543181) was copied.
171205 10:17:52 completed OK!

Xtrabackup安装
下载安装xtrabackup

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
[root@centos ~]# ll
total 703528
-rw-r--r-- 1 root root 654007697 Sep 27 09:18 mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz
-rw-r--r-- 1 root root  65689600 Nov 30 00:11 Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
[root@centos ~]# tar xf Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
[root@centos ~]# yum install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm -y
[root@centos ~]# which xtrabackup 
/usr/bin/xtrabackup
[root@centos ~]# innobackupex -v
innobackupex version 2.4.9 Linux (x86_64) (revision id: a467167cdd4)

#已经安装完成

创建测试数据

mysql> create database test;
Query OK, 1 row affected (0.00 sec)mysql> use test;
Database changed
mysql> create table T1 (name varchar(10) not null,sex varchar(10) not null);
Query OK, 0 rows affected (0.15 sec)mysql> insert into T1 values('zhang','man');
Query OK, 1 row affected (0.01 sec)mysql> insert into T1 values('zhan','man');
Query OK, 1 row affected (0.01 sec)mysql> insert into T1 values('sun','woman');
Query OK, 1 row affected (0.00 sec)mysql> select * from T1;
+-------+-------+
| name  | sex   |
+-------+-------+
| zhang | man   |
| zhan  | man   |
| sun   | woman |
+-------+-------+
3 rows in set (0.00 sec)

Xtrabackup实现数据的备份与恢复

全量备份与恢复
innobackupex --defaults-file=/etc/my.cnf --user=root --password="123456" --backup /root
Xtrabackup实现数据的备份与恢复
Xtrabackup实现数据的备份与恢复
从备份过程截图可以看出会创建一个时间的目录

[root@VM_0_8_centos ~]# ll /root/2017-12-04_14-43-20/
total 12352
-rw-r----- 1 root root      425 Dec  4 13:57 backup-my.cnf
-rw-r----- 1 root root      322 Dec  4 13:57 ib_buffer_pool
-rw-r----- 1 root root 12582912 Dec  4 13:57 ibdata1
drwxr-x--- 2 root root     4096 Dec  4 13:57 mysql
drwxr-x--- 2 root root     4096 Dec  4 13:57 performance_schema
drwxr-x--- 2 root root    12288 Dec  4 13:57 sys
drwxr-x--- 2 root root     4096 Dec  4 13:57 test
-rw-r----- 1 root root       22 Dec  4 13:57 xtrabackup_binlog_info
-rw-r----- 1 root root      113 Dec  4 13:57 xtrabackup_checkpoints
-rw-r----- 1 root root      537 Dec  4 13:57 xtrabackup_info
-rw-r----- 1 root root     2560 Dec  4 13:57 xtrabackup_logfile

#这里面就是相关的备份文件,同样也可以看到我们创建的库的名称
Xtrabackup实现数据的备份与恢复

mysql> drop table T1;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from T1;
ERROR 1146 (42S02): Table 'test.T1' doesn't exist[root@VM_0_8_centos ~]# innobackupex --apply-log /root/2017-12-04_14-43-20/

#使用此参数使用相关数据性文件保持一致性状态
Xtrabackup实现数据的备份与恢复

接下来准备恢复误删除数据
#恢复数据之前需要保证数据目录是空的状态
[root@centos ~]# innobackupex --defaults-file=/etc/my.cnf --copy-back /root/2017-12-04_13-57-29/
#具体看日志截图
Xtrabackup实现数据的备份与恢复
Xtrabackup实现数据的备份与恢复

[root@centos ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS! 
[root@centos ~]# lsof -i :3306
COMMAND PID USER  FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 5935 mysql 21u  IPv6 21850  0t0  TCP *:mysql (LISTEN)
mysql> use test;
Database changed
mysql> select * from T1;
+-------+-------+
| name  | sex |
+-------+-------+
| zhang | man  |
| zhan  | man |
| sun  | woman |
+-------+-------+
3 rows in set (0.00 sec)

##恢复成功

Xtrabackup增量备份与恢复
#需要注意的是,增量备份仅能应用于InooDB或XtraDB表,对于MyISAM表,增量与全备相同

mysql> select * from T1;
+-------+-------+
| name | sex  |
+-------+-------+
| zhang | man  |
| zhan  | man  |
| sun  | woman |
| susun | woman |
| sige | man  |
| mgg  | man |
+-------+-------+
6 rows in set (0.00 sec)

创建用于增量备份的数据,用来模拟删除掉了全备后的数据,能否通过增量备份文件来恢复
[root@Vcentos ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 --incremental /backup/ --incremental-basedir=/root/2017-12-04_13-57-29
#--incremental /backup/ 指定增量备份文件备份的目录
#--incremental-basedir 指定上一次全备或增量备份的目录
Xtrabackup实现数据的备份与恢复

[root@Vcentos ~]# ll /backup/2017-12-05_09-27-06/
total 312
-rw-r----- 1 root root    425 Dec  5 09:27 backup-my.cnf
-rw-r----- 1 root root    412 Dec  5 09:27 ib_buffer_pool
-rw-r----- 1 root root 262144 Dec  5 09:27 ibdata1.delta
-rw-r----- 1 root root     44 Dec  5 09:27 ibdata1.meta
drwxr-x--- 2 root root   4096 Dec  5 09:27 mysql
drwxr-x--- 2 root root   4096 Dec  5 09:27 performance_schema
drwxr-x--- 2 root root  12288 Dec  5 09:27 sys
drwxr-x--- 2 root root   4096 Dec  5 09:27 test
-rw-r----- 1 root root     21 Dec  5 09:27 xtrabackup_binlog_info
-rw-r----- 1 root root    117 Dec  5 09:27 xtrabackup_checkpoints
-rw-r----- 1 root root    560 Dec  5 09:27 xtrabackup_info
-rw-r----- 1 root root   2560 Dec  5 09:27 xtrabackup_logfile
[root@centos ~]# cd /backup/2017-12-05_09-27-06/
[root@centos 2017-12-05_09-27-06]# cat  xtrabackup_binlog_info
mysql-bin.000001    945
[root@centos 2017-12-05_09-27-06]# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 2542843
to_lsn = 2547308
last_lsn = 2547317
compact = 0
recover_binlog_info = 0

删除一条数据来测试增量恢复

mysql> delete  from T1 where name='susun';
Query OK, 1 row affected (0.06 sec)

Xtrabackup实现数据的备份与恢复
增量恢复操作过程如下

[root@centos ~]# innobackupex --apply-log --redo-only /root/2017-12-04_13-57-29/
[root@centos ~]# innobackupex --apply-log --redo-only /root/2017-12-04_13-57-29/ --incremental-dir=/backup/2017-12-05_09-27-06/

恢复全部数据

[root@centos ~]#innobackupex --defaults-file=/etc/my.cnf --copy-back /root/2017-12-04_13-57-29/
[root@centos ~]# /etc/init.d/mysqld start
Starting MySQL.. SUCCESS! 
[root@centos ~]# lsof -i :3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  23217 mysql  21u  IPv6 283226  0t0  TCP *:mysql (LISTEN)

查看恢复的数据完整性
Xtrabackup实现数据的备份与恢复

更多精彩内容请关注 民工哥公众号(mingogge-linux)
Xtrabackup实现数据的备份与恢复

转载于:https://blog.51cto.com/mingongge/2053794

相关文章:

最简单的CI框架入门示例--数据库取数据

这个写给初学者看,这是最简单可以调通的例子,网上很多例子其实初学者本地跑不通,缺这少那。 1.下载CI框架(自己找)2.配置 database.php配置: 为数据库服务器设置 connection 参数: $db[defau…

ST-GCN 实现人体姿态行为分类

作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 引用 人体行为识别是计算机视觉及机器学习方面的热门研究领域。它在对视频中的人类行为进行运动分析、行为识别乃至延伸至人机交互领域都有着非常广泛的应用。研究初期,人体行为识别主要是以…

【原创】Kakfa utils源代码分析(三)

Kafka utils包最后一篇~~~ 十五、ShutdownableThread.scala可关闭的线程抽象类! 继承自Thread同时还接收一个boolean变量isInterruptible表明是否允许中断。既然是可关闭的,因此一定不是守护线程,而是一个用户线程(不会阻塞JVM关闭)。提供的方…

Oracle的分页查询

为什么80%的码农都做不了架构师?>>> 因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理。使用rownum有以下几点需要注意: 1、ROWNUM存在使用规则,在单个子查询中&…

微软成功抵御峰值高达 2.4Tbps 的 DDoS 攻击

整理 | 祝涛 出品 | CSDN(ID:CSDNnews)微软表示,他们成功抵御了一场发生于8月份的2.4Tbps分布式拒绝服务(DDoS)攻击,这次攻击超过了去年针对亚马逊Web服务的2.3Tbps最大攻击。这场攻击持续…

百度吴甜:首席AI架构师培养计划持续为行业输送高端复合型AI人才

CSDN 导语: 随着 AI 技术的发展,关注 AI 的开发者与日俱增:据 CSDN 发布的《中国 AI 应用开发者报告》显示,在 CSDN 的注册开发者中,689 万开发者有阅读、撰写和研究 AI 技术行为,其中精准聚焦 AI 学习和应…

Htaccess文件是什么以及Windows下自由创建.htaccess文件的N种方法

.htaccess是什么 概述来说,htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。 通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访…

Linux grep,egrep及相应的正则表达式用法详解

linux在进行文本处理过程中的文本搜索工具称为正则表达式。文本搜索工具有grep、egrep、fgrep,egrep为正则表达式的扩展正则表达式,fgrep用于搜索文本字符串,与 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。grep的含…

Java GC 日志解析

JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如果验证配置参数的有效性,从GC日志中可以获得很重要的提示,以下是笔者对GC垃圾收集器默认开启的组合日志的部分的解析,希望能帮到想学习的同学O(…

MySQL 备份和恢复策略

在数据库表丢失或损坏的情况下,备份你的数据库是很重要的。如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态。本文主要对MyISAM表做备份恢复。 备份策略一:直接拷贝数据库文件(不推荐&#xff…

zookeeper学习记录

2019独角兽企业重金招聘Python工程师标准>>> 背景 前段时间看了S4流计算引擎,里面使用到了zookeeper进行集群管理,所以也就花了点时间研究了下zookeeper,不求看懂所有源码,但求了解其实现机制和原理,清楚其…

Ubuntu的apt-get使用国内的源

1、复制原文件备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2、打开清华大学TUNA官网发布的Ubuntu 镜像使用帮助。 3、复制下面框中的内容,打开自己的Ubuntu系统。 4、 将框中的内容替换掉原来的所有内容 sudo gedit /etc/apt/sources.list 5、 进…

51单片机实现对24C02进行页写、顺序读取并显示验证

源:51单片机实现对24C02进行页写、顺序读取并显示验证 //************************************************************************************* //**程序名称:51单片机实现对24C02进行页写、顺序读取并显示验证 //**编写人:**** //**修…

配置MySQL主从复制

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。当一个从服务器连接到主服务器时,它通知主服务器从…

PHP 单元测试

本文首发于 https://jaychen.cc/article/34作者 Jaychen朋友,你听说过安。。。不是,写过单元测试吗。 单元测试是开发过程中必不可少的一环,一个项目有良好的单元测试代码,重构的勇气都大很多。这次写一篇小文来介绍一下 PHP 的单…

CI框架如何删除地址栏的 index.php

默认 CI 框架显示地址是 http://localhost/ci/index.php/test/ 去掉index.php这样会更好些。1.修改Http.conf的 LoadModule rewrite_module modules/mod_rewrite.so 去掉注释2.ci根目录增加.htaccess文件 <IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /ci#Remov…

网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置)

2019独角兽企业重金招聘Python工程师标准>>> 网站被攻击是一个永恒不变的话题&#xff0c;网站攻击的方式也是一个永恒不变的老套路。找几百个电脑&#xff08;肉鸡&#xff09;&#xff0c;控制这些电脑同时访问你的网站&#xff0c;超过你网站的最大承载能力&…

除了 AI,这些技术为 IIoT 插上飞向“4.0”的翅膀

“中国制造2025、德国工业4.0、美国先进制造”——在21世纪的工业领域&#xff0c;“制造强国”开启新一轮角逐。尽管实现路径各有侧重&#xff0c;但题中之义均是通过互联网和智能技术实现企业生产和管理的降本增效。正因此&#xff0c;IIoT被视为助推智能制造转型升级的“催化…

[20171225]查看并行执行计划注意的问题.txt

[20171225]查看并行执行计划注意的问题.txt--//如果使用dbms_xplan.display_cursor查看并行执行计划注意一些问题,通过例子说明:1.环境:SCOTTbook> &r/ver1PORT_STRING VERSION BANNER------------------------------ -------------- ------…

expires与etag控制页面缓存的优先级

expires指令控制HTTP应答中的“Expires”和“Cache-Control”Header头部信息&#xff0c;启动控制页面缓存的作用time:可以使用正数或负数。“Expires”头标的值将通过当前系统时间加上设定time值来设定。time值还控制"Cache-Control"的值&#xff1a;负数表示no-cac…

API 大赛决赛名单出炉,速来围观!

创新云转型&#xff0c;智慧云服务2021年移动云API应用创新开发大赛正在火热进行中各个赛道激烈PK优秀开发者同台切磋彰显实力&#xff01;10月14日&#xff0c;2021年移动云API应用创新开发大赛复赛在中移软件园双创路演大厅圆满举办。本次复赛分为移动赛道和企业赛道分别进行…

将日期yyyy-MM-dd转为数字大写的形式

/*** 将日期转大写* 例如&#xff1a;2013-05-13转为 二0一三年五月十三日* param date* return */public static String getDxDate(String date){String dateArr[] date.split("-");String year dateArr[0];String month dateArr[1];String day dateArr[2];Str…

DevExpress v17.2新版亮点—WPF篇(四)

2019独角兽企业重金招聘Python工程师标准>>> DevExpress年终击穿底价&#xff0c;单套授权低至67折&#xff01;仅剩最后6天&#xff01;查看详情>>> 用户界面套包DevExpress v17.2终于正式发布&#xff0c;本站将以连载的形式为大家介绍各版本新增内容。本…

CI框架验证码CAPTCHA 辅助函数的使用

使用CAPTCHA 辅助函数很方便生成验证码&#xff0c;但是图片是存储在文件夹下&#xff0c;不是输出流&#xff0c;感觉不够完美&#xff0c;可以拿来用用。 说明&#xff1a;产生4位的随机数&#xff0c;CI根目录下建立captcha文件夹。 <?php $this->load->helper(ca…

GitLab 上市,市值高达 149 亿美元!GitHub 的头号劲敌来了

整理 | 祝涛 出品 | CSDN当地时间周四&#xff0c;知名代码和资源托管服务平台 GitLab&#xff08;股票代码GTLB&#xff09;完成了IPO&#xff08;首次公开募股&#xff09;&#xff0c;在纳斯达克成功上市。GitLab在本次 IPO 中筹集了约 6.5 亿美元。GitLab此前曾计划I…

将ubuntu系统设置静态ip及ssh

2019独角兽企业重金招聘Python工程师标准>>> sudo vim /etc/network/interfaces 输入以下&#xff1a;auto lo iface lo inet loopback auto eno1 iface eno1 inet static address 192.168.1.197 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameserver 192.168…

ECMAScript 5 —— 单体内置对象之Math对象

ECMAScript 还为保存数学公式和信息提供了一个公共位置&#xff0c;即 Math 对象。与我们在 JavaScript 直接编写的计算功能相比&#xff0c;Math 对象提供的计算功能执行起来要快得多。Math 对象中还提供了辅助完成这些计算的属性和方法。 一. Math 对象的属性 Math 对象包含的…

织梦内容管理系统修改

1.如何去掉互动中心 修改根目录下templates——default——index.htm文件&#xff0c;删除以下内容 <div id"rightAD1" style:margin:10px auto"></div> <div class"usercenter">.....到</div> <!-- /usercenter --&…

斯坦福大学 AI100 报告发布:AI 发展速度惊人,但风险也正走进现实

‍‍作者 | 阳光来源 | 学术头条语言处理、计算机视觉和模式识别的巨大进步&#xff0c;意味着人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;每天都在与人们的生活进行交互&#xff0c;从帮助人们选择电影&#xff0c;到帮助人们解决医疗诊断难题方面…

linux===Ubuntu 上安装 Node.js

https://www.cnblogs.com/andfly/p/6681487.html转载于:https://www.cnblogs.com/botoo/p/8118903.html