Home >Database >Mysql Tutorial >xtrabackup 安装及应用_MySQL

xtrabackup 安装及应用_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:49:361108browse

bitsCN.com


xtrabackup 是 percona 的一个开源项目,可以热备份innodb ,XtraDB,和MyISAM(会锁表)

官方网址http://www.percona.com/docs/wiki/percona-xtrabackup:start

 

 

安装:
rpm -ivh --nodephotoshop/ target=_blank class=infotextkey>ps xtrabackup-1.2-22.rhel5.x86_64.rpm
--nodephotoshop/ target=_blank class=infotextkey>ps(不检查软件间的依赖关系),因为安装xtrabackup需要mysql_client,但是我的是通过源码安装的。

 

前奏:
环境变量要设置正确
比如 export PATH=$PATH:/usr/local/mysql/bin   如果mysql没有设置到PATH里 会报错。

 

1.innobackupex-1.5.1 和 xtrabackup备份详解
========================================================================================
innobackupex-1.5.1会根据/et/my.cnf来确定MySQL的数据位置。

1.普通备份:
innobackupex-1.5.1 [--defaults-file=/etc/my.cnf]  --user=root [--host=192.168.1.52] [--password=xxx] [--port=3306]
 /data/back_data/  2>/data/back_data/1.log   

备份的目录是/data/back_data/
这里的2>/data/back_data/1.log,是将备份过程中的输出信息重定向到1.log

innobackupex-1.5.1 --slave-info .....
--slave-info会记录复制主日志的 复制点,便于重新做复制用。(用在备份从机器用)

备份后的文件:
xtrabackup_binlog_info    -- 存放binlog的信息。(binlog需要另外拷贝备份,如果需要binlog的话)
xtrabackup_checkpoints    -- 存放备份的起始位置和结束位置。


恢复:
首先停掉数据库,然后删除数据库目录下的所有数据库文件.
cd /data/mysql_data
rm -rf *     # 删除数据目录里的所有文件

innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-26_16-09-37   # 应用日志
innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-26_16-09-37

默认innobackupex-1.5.1会将二进制日志信息存放在文件xtrabackup_binlog_info中发(方便做Slave)。
cd /data
chown -R mysql:mysql mysql_data/
重启mysql服务

 


2.打包(Tar)备份:
innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar /data/back_data/2/  2>/data/back_data/2.log  1>/data/back_data/2.tar

还原:
cd /data/back_data/2/
tar ixvf 2.tar
root@mablevi-desktop:/data/back_data/2# ls
2.tar  backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
准备还原
root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/
......
innobackupex: completed OK!

删除数据目录里的所有文件
rm -rf /data/mysql_data/*
拷贝:
root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/
......
innobackupex: completed OK!

cd /data
chown -R mysql:mysql mysql_data/
重启mysql服务


3. 压缩(tar gzip)备份
innobackupex-1.5.1 --user=root [--password=xxx] --stream=tar 
/data/back_data/2/  2>/data/back_data/2.log | gzip > /data/back_data/2.tar.gz 
这里使用了管道|将innobackupex-1.5.1作为gzip的标准输入。恢复,只需要使用tar -izxvf 解压对应的文件后,操作完全同普通备份。

还原:
使用tar –izxvf 解压对应的文件后,操作完全同普通备份。
cd /data/back_data/2/
tar ixvf 2.tar

root@mablevi-desktop://data/back_data/2# ls
backup-my.cnf  ibdata1  ibdata2  mablevi  mysql  xtrabackup_binlog_info  xtrabackup_checkpoints  xtrabackup_logfile
准备还原:
root@mablevi-desktop:~# innobackupex-1.5.1 --user=xxx [--password=xxx] --apply-log /data/back_data/2/
......
innobackupex: completed OK!

删除数据目录里的所有文件
rm -rf /data/mysql_data/*

root@mablevi-desktop:/data/back_data/2# innobackupex-1.5.1 --user=xxx [--password=xxx] --copy-back /data/back_data/2/

cd /data
chown -R mysql:mysql mysql_data/
重启mysql服务

 

 

---------------------------------------------------------------------------------------------------------------------
xtrabackup 备份和恢复

备份:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/

恢复:
需要执行两次xtrabackup --prepare
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/

注意,xtrabackup只备份数据文件,并不备份数据表结构(.frm),所以使用xtrabackup恢复的时候,你必须有对应表结构文件(.frm)。


增量备份:
1. 全量备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data/
2. 增量备份
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/ --incremental-basedir=/data/back_data/
在增量备份的目录下,数据文件都是以.delta结尾的。增量备份只备份上一次全量备份后被修改过的page,所以增量备份只暂用较少的空间。

增量备份可以在增量备份的基础上增量。

 

增量备份恢复:
我们需要分别对全量、增量备份各做一次prepare操作。
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/back_data/2010-10-26_16-09-37
xtrabackup --prepare --target-dir=/data/back_data/2010-10-26_16-09-37 --incremental-dir=/data/back_data_inc
xtrabackup --prepare --target-dir=/data/back_data/ #这一步不是必须的 
这样,/data/back_data/下的数据文件就可以直接放到你的MySQL数据目录下,恢复数据了。
再次提醒,xtrabackup只备份InnoDB数据文件,表结构是不备份的,所以恢复的时候,你必须有对应表结构文件(.frm)。

rm -rf /data/mysql_data/ib*

cp -i /data/back_data/2010-10-26_16-09-37/ib* /data/mysql_data/

cd /data
chown -R mysql:mysql mysql_data/

 

 


2.innobackupex-1.5.1 与 xtrabackup 相结合
=======================================================================================
首先,innobackupex-1.5.1全备份:
innobackupex-1.5.1 --user=root /data/back_data/ 2>/data/back_data/1.log         #会生成一个时间文件夹,这里假如是2010-10-29_15-57-44
然后,xtrabackup 做增量备份:
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/back_data_inc/4 --incremental-basedir=/data/back_data/2010-10-29_15-57-44


恢复:
首先停掉数据库,备份二进制日志(如果有的话),然后删除数据库目录下的所有数据库文件.
cd /data/mysql_data
rm -rf *           # 删除数据目录里的所有文件

恢复全量备份:
innobackupex-1.5.1 --user=root --apply-log /data/back_data/2010-10-29_15-57-44   # 应用日志
innobackupex-1.5.1 --user=root --copy-back /data/back_data/2010-10-29_15-57-44   # 拷贝文件
恢复增量备份:
xtrabackup --prepare --target-dir=/data/back_data/2010-10-29_15-57-44 --incremental-dir=/data/back_data_inc/5

cd /data
chown -R mysql:mysql mysql_data/

重启mysql服务。

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn