Xtrabackup 使用方法
简介:
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 使用方法的更多相关文章
- MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出
粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...
- galera mariadb集群恢复策略
1 galera mariadb首先MariaDB是一个数据库,可以看成是MySQL的一个分支,由于MySQL被SUN收购,所以MySQL面临着闭源的风险,当时MySQL之父Widenius并没有加入 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- xtrabackup备份mysql数据库的使用方法
xtrabackup是由percona提供的mysql备份工具,它是一款物理备份工具,通过连接数据库把数据库的数据备份出来.对于innodb存储引擎其支持全量备份和增量备份.对于myisam存储引擎只 ...
- MySQL运维之--xtrabackup工具的原理和使用方法
Xtrabackup工具的介绍 xtrabackup是percona公司开发的一款自由.免费.开源的一款备份工具,他的备份特点就是:支持热备.备份速度快. xtrabackup包含两个重要的工具:in ...
- linux Xtrabackup安装及使用方法
[root@centos01 ~]# rpm -Uvh http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x ...
- xtrabackup备份mysql数据库方法
1.安装 xtrabackup 工具包 下载percona yum源 https://www.percona.com/redir/downloads/percona-release/redhat/pe ...
- XtraBackup构建MySQL主从环境的方法
环境:HE3主库,HE1从库HE1:192.168.1.248HE3:192.168.1.250从库my.cnf加入以下参数并重启数据库:read_only=1log_slave_updates=1( ...
- Percona XtraBackup 完全及增量备份与恢复的方法
安装及备份.恢复实现 安装:其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得.本文基于CentOS6.x的系统,因此,直 ...
随机推荐
- 微信小程序 - 文字走马灯
转载于csdn maid_04,总之多谢了!节省了不少时间呢 最近在做一个类似uu跑腿的项目,时间也特别紧,搞完以后再继续贴地图代码(高德.腾讯) 以下代码拷贝即可用,拿走谢谢上面的人吧(~.~) w ...
- 工作笔记4.struts2上传文件到server
本文介绍两种:上传文件到server的方式 一种是提交Form表单:还有一种是ajaxfileupload异步上传. 一.JSP中: 1.提交Form表单 为了能完毕文件上传,我们应该将这 ...
- JSON--百度百科
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- 【Python】self的用法扫盲
在Python中,我们有两个重要的概念:类与实例 例如:我们在现实生活中人就是一个类,实例就是具体到某一个男人(张三.李四等) 1.类:定义人这个类 class People(object): pas ...
- shll 基础讲解
http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html Shell编程基础 $# 命令行得到的参数个数 $@ 命令行得到的所有参数作 ...
- centos7单机版安装hbase
1.首先安装jdk1.8 yum install java-1.8.0-openjdk* -y 2.下载hbase 地址:http://mirrors.shuosc.org/apache/hbase/ ...
- java线程不安全类与写法
线程不安全类 1.为什么java里要同时提供stringbuilder和stringbuffer两种字符串拼接类 2.simpledateformate是线程不安全的类,如果把它作为全局变量会有线程安 ...
- bzoj1670【Usaco2006 Oct】Building the Moat 护城河的挖掘
1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 387 Sol ...
- 183.Wood Cut【hard】
183.Wood Cut[hard] Given n pieces of wood with length L[i] (integer array). Cut them into small piec ...
- 141. Sqrt(x) 【easy】
141. Sqrt(x) [easy] Implement int sqrt(int x). Compute and return the square root of x. Example sqrt ...