简介:
Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。本文测试使用的是1.3版本,Xtrabackup有两个主要的工具:xtrabackup、innobackupex,其中xtrabackup只能备份InnoDB和XtraDB两种数据表,innobackupex则封装了xtrabackup,同时可以备份MyISAM数据表。
 
环境:
测试主机:ubuntu-8.04/10.04
INNODB环境:
innodb_data_home_dir = /usr/local/mysql/var/
innodb_data_file_path = ibdata1:100M;ibdata2:100M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/var/
 
下载XtraBackup:(2进制包)
http://www.percona.com/downloads/XtraBackup/XtraBackup-1.3-beta/Linux/binary/i686/
 
本人在测试1.2的时候增量备份出错,错误为:segmentation fault,故用1.3来测试
 
下载解压后,进入目录看到4个文件:
innobackupex-1.5.1  tar4ibd  xtrabackup  xtrabackup_50
如有需要把这些文件复制到/usr/bin 目录下:
cp innobackupex-1.5.1 /usr/bin/innobackupex
cp tar4ibd   /usr/bin
cp xtrabackup_50 /usr/bin/xtrabackup

#cp xtrabackup /usr/bin

innobackup备份:
XtraBackup使用脚本innobackupx-1.5.1来备份你的数据库。关于innobackupx-1.5.1的详细参数,请参考http://www.percona.com/docs/wiki/percona-xtrabackup:xtrabackup_manual。这里列出比较常用的备份命令:普通备份、打包(Tar)备份、压缩(Tar gzip)备份。
 
需要注意的是,innobackupex-1.5.1会根据你的/etc/my.cnf配置,来确定你的MySQL数据位置(datadir),所以你并不需要告诉innobackupex-1.5.1你的MySQL数据在哪儿。(必须要在my.cnf中配置datadir参数)
 
1,普通备份:
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 /usr/local/innobackup/
……
100901 17:17:26  innobackupex: completed OK!
 
这里我们使用mysql的mablevi用户备份,密码为123456。备份的目标目录(target dir)是/usr/local/innobackup/,innobackupex-1.5.1将在该目录下生成备份。例如/usr/local/innobackup/2010-09-01_17-16-51就是我执行脚本后生成的备份,所有的备份文件都在该./2010-09-01_17-16-51目录下。
查看备份文件:
root@mablevi-desktop:/usr/local/innobackup/2010-09-02_13-59-49# ls
backup-my.cnf  ibdata2  mysql         mysql-stdout  xtrabackup_binlog_info  xtrabackup_logfile
ibdata1        mablevi  mysql-stderr  test          xtrabackup_checkpoints

要是觉得显示的信息太多,则可以用:
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 /usr/local/innobackup/ 2>/usr/local/innobackup/1.log
这里的2>/u01/backup/1/1.log,是将备份过程中的输出信息重定向到1.log。
------
还原:
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456  --apply-log /usr/local/innobackup/2010-09-01_17-16-51
#应用日志ibbackup_logfile
……
100901 17:47:09  innobackupex: completed OK!

删除数据目录里的所有文件
rm -rf /usr/local/mysql/var/*

root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456  --copy-back /usr/local/innobackup/2010-09-01_17-16-51
……
100901 17:53:11  innobackupex: completed OK!

cd /usr/local/mysql/
chown -R mysql var/
修改数据库目录的权限.
重启mysql服务
innobackupex-会根据/etc/my.cnf来确定MySQL的数据位置。

------------------------------------------------------
2,打包(Tar)备份
这里基本和前面的普通备份类似,就不做详细说明了,之列出对应的命令。值得一提的是,恢复解压缩时,必须使用-i参数。
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --stream=tar /usr/local/innobackup/2/ 1>/usr/local/innobackup/2/2.tar
.....
或则
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --stream=tar /usr/local/innobackup/3/ 2>/usr/local/innobackup/2.log 1>/usr/local/innobackup/3/3.tar
这里使用1>做标准输出重定向
---------
还原:
cd /usr/local/innobackup/2/
tar ixvf 2.tar
root@mablevi-desktop:/usr/local/innobackup/2# ls
2.tar  backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
准备还原
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --apply-log /usr/local/innobackup/2/
......
innobackupex: completed OK!

删除数据目录里的所有文件
rm -rf /usr/local/mysql/var/*

root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --copy-back /usr/local/innobackup/2/
......
innobackupex: completed OK!

cd /usr/local/mysql/
chown -R mysql var/
修改数据库目录的权限.
重启mysql服务

-----------------------------------------------------
3,压缩(tar gzip)备份
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --stream=tar /usr/local/innobackup/1/ |gzip > /usr/local/innobackup/1/1.tar.gz
....
100902 15:20:32  innobackupex: completed OK!
或则
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --stream=tar /usr/local/innobackup/1/ 2>/usr/local/innobackup/1.log |gzip > /usr/local/innobackup/1/1.tar.gz
------
还原:

要使用tar –izxvf 解压对应的文件后,操作完全同普通备份。
cd /usr/local/innobackup/1/
tar ixvf 1.tar
cd /usr/local/innobackup/2/
tar izxvf 2.tar
root@mablevi-desktop:/usr/local/innobackup/1# ls
backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
准备还原:
root@mablevi-desktop:~# innobackupex --user=mablevi --password=123456 --apply-log /usr/local/innobackup/1/
......
innobackupex: completed OK!

删除数据目录里的所有文件
rm -rf /usr/local/mysql/var/*

root@mablevi-desktop:/usr/local/mysql/var# innobackupex --user=mablevi --password=123456 --copy-back /usr/local/innobackup/1/

cd /usr/local/mysql/
chown -R mysql var/
修改数据库目录的权限.
重启mysql服务

=============================================================================================================================
=============================================================================================================================
=============================================================================================================================

上面介绍了如何使用innobackupex来备份和恢复数据库。这里将继续介绍Xtrabackup中的另一个工具xtrabackup(二进制脚本)。innobackupex对xtrabackup进行了封装可以同时备份InnoDB和MyISAM数据表,在备份MyISAM表时会进行全局锁表,如果单独使用xtrabackup,我们不仅可以实现真正的“在线”备份,还可以进行增量备份InnoDB。
本文将介绍如何单独使用xtrabackup来备份你的InnoDB数据。
http://www.orczhou.com/index.php/2009/10/xtrabackup-2/
1,xtrabackup备份
注意:必须要在my.cnf中配置datadir参数
比如表中目前有10条数据,先备份.备份到/usr/local/backup/1/目录 (完整备份)
root@mablevi-desktop:~# xtrabackup --defaults-file=/etc/my.cnf --backup --target=/usr/local/backup/1/
----------------------
2,恢复
删除表中的数据,还原:
需要执行两次xtrabackup --prepare,第二次产生logfile文件;
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
/etc/init.d/mysql restart
数据已恢复
----------------------------------------------------------------------------------------------------------------------------
3,增量备份
对比innobackupex和xtrabackup我们可以看到,innobackupex操作起来更方便,但是innobackupex会有短暂的锁表(时间依赖于MyISAM大小)。xtrabackup备份还有另一个重要特性:增量备份。(未来的版本innobackupex也可能增长该功能)

比如表中目前有10条数据,先备份.备份到/usr/local/backup/1/目录 (完整备份)
root@mablevi-desktop:~# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/1/
查看它的lsn点:
root@mablevi-desktop:/usr/local/backup/1# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0:0
to_lsn = 0:592411
再向表中插入数据,增量备份
root@mablevi-desktop:~# xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/2/ --incremental-basedir=/usr/local/backup/1/
把增量备份到2(1到2的增量备份)
查看它的lsn点:

root@mablevi-desktop:/usr/local/backup/2# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:908563
再向表中插入数据,增量备份
root@mablevi-desktop:~# xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/1/
把增量备份到3(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)
查看它的lsn点:
root@mablevi-desktop:/usr/local/backup/3# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:592411
to_lsn = 0:1507854

或则另一种增量备份方式:

root@mablevi-desktop:~# xtrabackup --defauls-file=/etc/my.cnf --backup --target-dir=/usr/local/backup/3/ --incremental-basedir=/usr/local/backup/2/
把增量备份到3(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)
查看它的lsn点:

root@mablevi-desktop:/usr/local/backup/4# cat xtrabackup_checkpoints
backup_type = incremental
from_lsn = 0:908563
to_lsn = 0:1507854

------------
4,增量备份恢复
我们需要分别对全量、增量备份各做一次prepare操作。

①:基于(1到3的增量备份,2的备份已经包含在里面了,按照这种方式备份的话,最后的还原只需要还原完全备份和最后一份增量备份即可)
把第1次的完备恢复
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
继续把增量备份恢复上去
/usr/local# xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/
恢复完成
接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
/etc/init.d/mysql restart

②基于(2到3的增量备份,各个增量备份独立,按照这种方式备份的话,最后的还原需要还原完全备份和各个增量备份)
把第1次的完备恢复
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/usr/local/backup/1/
继续把增量备份恢复上去
/usr/local# xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/2/
继续把增量备份恢复上去
/usr/local# xtrabackup --prepare --target-dir=/usr/local/backup/1/ --incremental-dir=/usr/local/backup/3/
恢复完成
接着
cd /usr/local/backup/1/
cp 1/ib* /usr/local/mysql/var/
/etc/init.d/mysql restart

另一种方法 是 可以执行一条上面的 再cp 过去,可以测试一个一个增量备份

参考地址:

http://chlotte.blog.51cto.com/318402/376294

http://www.orczhou.com/index.php/2009/09/xtrabackup-mysql-innodb/

http://www.orczhou.com/index.php/2009/10/xtrabackup-2/

Xtrabackup 使用方法相关推荐

  1. Xtrabackup安装以及应用

    Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. xtrabackup官方网址:ht ...

  2. 通过XtraBackup进行数据库表备份和表空间传输实例

    一.安装教程 1.XtraBackup简介 XtraBackup有很多功能和优点:例如支持全备.增量备份.部分备份:支持压缩备份:备份不影响数据读写.事务等,但是也有缺陷不足:例如不支持脱机备份.不支 ...

  3. mysql数据库:Xtrabackup安装以及应用

    Xtrabackup安装以及应用 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. ...

  4. MySQL备份Percona Xtrabackup安装和卸载

    MySQL备份Percona Xtrabackup安装和卸载 Percona XtraBackup 安装介绍篇 XtraBackup介绍 XtraBackup是Percona公司的开源项目,用以实现类 ...

  5. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡

    为什么80%的码农都做不了架构师?>>>    ttlsa教程系列之MySQL ---- MySQL/Galera集群-多主高可用性负载均衡 Percona和MariaDB发布版本中 ...

  6. 阿里云RDS数据库备份恢复【取证】教程

    一.安装虚拟机 选择Centos 6.5 Centos6.5安装 经过不断折腾,最后换了Centos7 来做恢复,过程与6.5差不多. 二.安装mysql数据库 mysql安装方法 最后参考的这个链接 ...

  7. mysql 50g 备份多久,MySQL数据库备份过程的注意事项

    今天看了看数据备份相关的东西,总结了几个MySQL数据备份的注意事项,简单分享一下吧. 对于MySQL备份,每个DBA的理解可能都不一样,备份可以分为下面几个维度: 文件种类划分: 1.物理备份,以x ...

  8. mysql percona 集群_MySQL高可用性解决方案—Percona XtraDB Cluster

    MySQL数据库的性能是服务器运维中不可缺少的部分,需要不断的优化数据库的性能,寻找出系统的瓶颈.今天就来分享一款提高数据库高可用性的解决方案.Percona XtraDB Cluster---MyS ...

  9. mysql galera 恢复_galera mariadb集群恢复策略

    1 galera mariadb 首先MariaDB是一个数据库,可以看成是MySQL的一个分支,由于MySQL被SUN收购,所以MySQL面临着闭源的风险,当时MySQL之父Widenius并没有加 ...

最新文章

  1. 博士真正搞科研的姿势
  2. OpenStack和Redis
  3. 6月第一周国内域名解析商:万网继续抢占DNSPod份额
  4. PetShop4.0的安装、设置、调试与体验(草稿)
  5. 【bzoj 2461】[BeiJing2011]符环(高维dp+记忆化搜索)
  6. 制作一个简单HTML静态网页(HTML+CSS)
  7. 网络安全实验3 使用PGP实现电子邮件安全
  8. 我在云栖社区读硕士,大数据专业
  9. 传奇开服教程:传奇添加地图花屏原因与解决方法
  10. LeetCode 316/1081[Python]. 去除重复字母 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。
  11. A4纸张两面打印、每面打印2页的打印机设置
  12. 老A:什么是抖音弹幕互动游戏,玩法以及如何参与
  13. SpringBoot+LayUI+MybatisPlus+Echarts图表 前后端分离 实现数据统计功能
  14. Fiddler 安装使用教程
  15. 数据库系统中的三级模式、两级映像以及数据独立性(附绪论思维导图)
  16. ZIP压缩算法详细分析及解压实例
  17. java tts开源,程序员罗杰-开源的TTS软件Flite从安装到使用
  18. CF1444C Team-Building 可撤销种类并查集
  19. oracle2周后日期,ORACLE日期时间及数字的格式化参数大全
  20. 轻松实现即席查询,Smartbi满足用户多样分析需求

热门文章

  1. 2-3树------2-3-4树-----左倾红黑树
  2. 2021-11-04 阳光城网络配置
  3. 硕士研究生入学考试报考指南(考研流程)
  4. 亚马逊云科技Amazon S3存储与客户的“独家记忆”
  5. 【CSS颜色指南】:看完这一篇就明白CSS常见颜色表示方法
  6. bmp图片在arm开发板显示
  7. “航天组”新赛道设计邀请赛
  8. 考CISAW的N个理由!
  9. 关于uboot代码所设置的raw分区分析
  10. JKTD-1000型铁电材料测试仪