一.xtrabackup介绍

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上唯一 一款开源的能够对innodb和xtradb数据库进行热备的工具。

特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
注意:xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 但是innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力

二.下载安装xtrabackup

2.1下载xtrabackup的rpm包

https://www.percona.com/downloads/XtraBackup/LATEST/

2.2安装相关依赖包

[root@zha ~]# yum install -y prel-DBD-MySQL perl-DBI perl-Time-HiRes libaio*

2.3安装xtrabackup的rpm包

[root@zha ~]# rpm -ivh percona-xtrabackup--2.4.-.el6.x86_64.rpm
warning: percona-xtrabackup--2.4.-.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing... ########################################### [%]
:percona-xtrabackup- ########################################### [%]

如果报错:

[root@zha ~]# rpm -ivh percona-xtrabackup--2.4.-.el6.x86_64.rpm
warning: percona-xtrabackup--2.4.-.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
error: Failed dependencies:
libev.so.()(64bit) is needed by percona-xtrabackup--2.4.-.el6.x86_64

提示缺少libev的rpm包

http://rpm.pbone.net/index.php3?stat=26&dist=74&size=74692&name=libev-4.15-1.el6.rf.x86_64.rpm(livev包下载地址)

安装libev包再安装xtrabackup即可

[root@zha ~]# rpm -ivh libev-4.15-.el6.rf.x86_64.rpm
warning: libev-4.15-.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
Preparing... ########################################### [%]
:libev ########################################### [%]

2.4 查看安装结果

[root@zha ~]# rpm -qa | grep xtrabackup
percona-xtrabackup--2.4.-.el6.x86_64
[root@zha ~]# rpm -ql percona-xtrabackup--2.4.-.el6.x86_64
/usr/bin/innobackupex
/usr/bin/xbcloud
/usr/bin/xbcloud_osenv
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup
/usr/lib64/xtrabackup/plugin/keyring_file.so
/usr/lib64/xtrabackup/plugin/keyring_vault.so
/usr/share/doc/percona-xtrabackup--2.4.
/usr/share/doc/percona-xtrabackup--2.4./COPYING
/usr/share/man/man1/innobackupex..gz
/usr/share/man/man1/xbcrypt..gz
/usr/share/man/man1/xbstream..gz
/usr/share/man/man1/xtrabackup..gz

Xtrabackup中主要包含两个工具:
xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表,也不能备份数据表结构;
innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

三.使用xtrabackup对MySQL完全备份

3.1完全备份

语法:innobackupex --user=用户名 --password=密码 备份目录位置
如果报错:Can't load '/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so' for module DBD::mysql: libmysqlclient.so.18: 无法打开共享对象 at /usr/bin/innobackupex line 18
需要拷贝libmysqlclient.so.18至/usr/lib64
cp /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/
#完全备份到/mysql_backup/目录下

[root@zha ~]# innobackupex --user=root /mysql_backup/
:: completed OK! (出现ok即可)

备份后的文件:在备份的同时,备份数据会在备份目录下创建一个以当前日期时间为名字的目录存放备份文件。

查看备份后的数据

各文件说明:
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(5)backup-my.cnf —— 备份命令用到的配置选项信息;

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。
准备(prepare)一个完全备份
一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

[root@zha --04_17--]# innobackupex --apply-log /mysql_backup/--04_17--/
:: completed OK!

在实现“准备”的过程中,innobackupex通常还可以使用–use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。

3.2 完全备份恢复

#复制目录到/zha下

[root@zha ~]# cp -r /mysql_backup/--04_17--/ /zha (以防玩脱)

#模拟数据库故障(关闭数据库并删除数据文件)

[root@zha ~]# /etc/init.d/mysqld stop
Shutting down MySQL. [ OK ]
[root@zha ~]# cd /usr/local/mysql/data/
[root@zha data]# ls
ibdata1 mysql-bin. performance_schema
ib_logfile0 mysql-bin. test
ib_logfile1 mysql-bin. zha
mysql mysql-bin.index zha.err
[root@zha data]# rm -rf *
[root@zha data]# ls (数据已经没有了)

#恢复

[root@zha data]# innobackupex --copy-back /mysql_backup/--04_17--/
:: completed OK!

如果报错Error: datadir must be specified. 意思是(在默认配置文件 /etc/my.cnf 中,没有找到 datadir 配置项)

vim /etc/my.cnf # 加入 datadir 配置项即可
datadir = /usr/local/mysql/data

#再次查看/data目录,数据已经恢复

[root@zha data]# ls
ibdata1 performance_schema
ib_logfile0 xtrabackup_info
ib_logfile1 xtrabackup_master_key_id
ibtmp1 zha
mysql

#修改权限启动mysql

[root@zha ~]# chown -R mysql:mysql /usr/local/mysql/data/
[root@zha ~]# /etc/init.d/mysqld start
Starting MySQL.. [ OK ]

四. 使用xtrabackup对MySQL增量备份

4.1创建测试库、表,然后插入测试数据

mysql> create database test character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> use test;
Database changed
mysql> create table test (id int(10) not null,name varchhar(20));
Query OK, 0 rows affected (0.03 sec) mysql> insert into test values(1,'chenjiaxin');
Query OK, 1 row affected (0.01 sec)
mysql> insert into test values(1,'陈嘉欣');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+----+------------+
| id | name |
+----+------------+
| 1 | chenjiaxin |
| 1 | 陈嘉欣 |
+----+------------+
2 rows in set (0.00 sec)
mysql> exit;
Bye

#第一次完全备份

[root@zha ~]# innobackupex --user=root --database=test --no-timestamp /mysql_backup/
:: completed OK!

#第二次添加数据

mysql> use test;
Database changed
mysql> insert into test values(2,'test');
Query OK, 1 row affected (0.04 sec) mysql> exit;
Bye

#第一次增量备份

[root@zha mysql_backup]# innobackupex --user=root --database=test --no-timestamp --incremental-basedir=/mysql_backup/ --incremental /test2
:: completed OK!

# --incremental-basedir=/data/backup_db/test_incre 第一次增备指定全备路径
# --incremental 参数说明这是一次增备,并指定增备路径

4.2统计大小,验证是否为增量备份

[root@zha /]# du -sh /mysql_backup/
69M /mysql_backup/
[root@zha /]# du -sh /test2/
1.5M /test2/

至此增量备份已经完成!

注意: 第二次增备是在第一次增备的基础上,所以 --incremental-basedir 指定的是第一次增备目录,最后指定的第二次增备目录

[root@zha /]# cd /test2/
[root@zha test2]# cat xtrabackup_checkpoints
backup_type = incremental # backup_type 提示:这是一次增备
from_lsn = #from_lsn 提示:从上次结束开始1599380
to_lsn = #from_lsn 提示:到1600863结束
last_lsn =
compact =
recover_binlog_info =

Xtrabackup实现MySQL备份的更多相关文章

  1. 使用第三方工具Xtrabackup进行MySQL备份

    使用Xtrabackup进行MySQL备份: 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtr ...

  2. Percona XtraBackup 关于 MySQL备份还原的详细测试

    一. Percona XtraBackup 的优点. (1)无需停止数据库进行InnoDB热备: (2)增量备份MySQL: (3)流压缩传输到其它服务器: (4)在线移动表: (5)能够比较容易地创 ...

  3. 基于xtrabackup实现mysql备份还原

    简介 Xtrabackup2.2版之前包括4个可执行文件: innobackupex: Perl 脚本 xtrabackup: C/C++ 编译的二进制 xbstream: 支持并发写的流文件格式 x ...

  4. 使用Xtrabackup进行MySQL备份 zz

    zz from  http://www.magedu.com/ 一.安装 1.简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对i ...

  5. Mysql备份系列(1)--备份方案总结性梳理

    mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...

  6. Mysql备份方案总结性梳理

    Mysql备份方案总结性梳理   服务器 mysql 日志 数据库 配置 Mariadb binlog   mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种 ...

  7. 使用 xtrabackup 进行MySQL数据库物理备份

    0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...

  8. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  9. mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从

    注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...

随机推荐

  1. 浅谈windows.onload()与$(document).ready()

    浏览器加载完DOM后,会通过javascript为DOM元素添加事件,在javascript中,通常使用window.onload()方法. 在jquery中,则使用$(document).ready ...

  2. 安全漏洞 : XSS CSRF

    https://my.oschina.net/hc24/blog/527099 XSS成因概括 : XSS其实就是Html的注入问题,攻击者A的输入没有经过严格的控制进入了数据库,最终显示给来访的用户 ...

  3. document.URL 和 windows.location.href的区别

    1. 从输出结果上,document.URL 和 windows.location.href 没有区别.2. 非要说区别的话,你只可以读取document.URL的值,不能修改它.windows.lo ...

  4. ASP.NET MVC 音乐商店 - 3. 视图与模型

    上一篇中使用字符串,这一篇我们就开始使用视图来处理. 我们已经可以从控制器的 Action 中返回一个字符串,这可以帮助我们更好地理解 Controller 是如何工作的.但是对于创建一个 Web 程 ...

  5. python列表生成式、列表推导式

    运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素 ...

  6. Azure进阶攻略 | 应用流畅运行杜绝超载,自有一套好方法

    世界上很多东西,无论交通工具.房屋建筑,甚至计算机程序,在容量方面都存在设计上的理论最大值. 比如火车,正常情况下是这样的.舒适地坐着,安静地读一本书,时不时抬头若有所思地远眺车窗外风景,满满的文艺范 ...

  7. Python基础学习之序列(1)

    序列 序列类型有着相同的访问模式:它的每一个元素可以通过指定一个偏移量的方式得到.而多个元素可以通过切片操作的方式一次得到,下标偏移量是从0开始到总元素-1结束,之所以要减1是因为我们是从0开始计数的 ...

  8. meta详解(常用)

    1.<meta http-equiv="X-UA-Compatible" content="IE=edge"> 说明:设置浏览器的兼容模式版本.表示 ...

  9. 关于vim、nvim的折腾

    1 from a view of enc ·nvim必须set enc=utf8,很多基于python的插件也默认了此,这对于中文这些并不友好,然而,vim支持多字节就好的多. 因为很多项目,大家可能 ...

  10. Apache2.4 authz_core_module模块使用

    Description: Core Authorization Status: Base Moduledentifier: authz_core_module Sourceile: mod_authz ...