您的位置:首页 > 数据库 > MySQL

Xtrabackup热备份mysql工具使用

2016-09-13 20:14 691 查看
下载地址: https://pan.baidu.com/s/1qYvRDFY 
热备份工具,备份不锁表。
备份时只备份表中记录,不备份表结构
增量备份时,需要先完全备份,在增量备份
yum install -y percona-xtrabackup-2.1.6-702.rhel6.x86_64.rpm

[root@localhost opt]# rpm -ql percona-xtrabackup
/usr/bin/innobackupex             #支持myisam引擎锁表备份
/usr/bin/innobackupex-1.5.1       #支持myisam引擎锁表备份
/usr/bin/xbcrypt
/usr/bin/xbstream
/usr/bin/xtrabackup               #5.1版本用这个
/usr/bin/xtrabackup_55            #给5.5版本用的备份脚本
/usr/bin/xtrabackup_56            #给5.6版本及以上的版本用的
/usr/share/doc/percona-xtrabackup-2.1.6
/usr/share/doc/percona-xtrabackup-2.1.6/COPYING

/usr/bin/xtrabackup_56  的用法
--backup  备份数据
--target-dir=目录名  备份文件存储的位置(就是你把备份的数据存放哪里)
--datadir=/usr/local/mysql/ 数据库目录
--prepare  准备恢复数据
--incremental-basedir=目录名  增量备份时,指定参考的完整备份路径(增量备份的时候用的参数)
--incrementar-dir=目录名  准备恢复目录时,指定增量备份的据经(把增量备份的数据还原的时候用的参数)

例题:
备份数据(在使用增量备份前,首先要来一次完整备份)
第一次完整备份(备份到/mydata下)
[root@localhostopt]#xtrabackup_56 --backup  \
--target-dir=/mydata/ \
--datadir=/usr/local/mysql/data
第一次增量备份(把增量备份的数据备份到/new1)
[root@localhostopt]# xtrabackup_56 --backup \
--target-dir=/new1/ \
--datadir=/usr/local/mysql/data  \
--incremental-basedir=/mydata/
第二次增量备份把增量备份的数据备份到/new2)
[root@localhost opt]# xtrabackup_56 --backup
--target-dir=/new2/
--datadir=/usr/local/mysql/data --incremental
--basedir/new1/

数据恢复(我这里的库表操作是db5.liuwenzhi。希望下面出现了db5看得懂)
先恢复第一次完整备份的数据
模拟数据丢失
先备份一下:
[root@localhost opt]#xtrabackup_56 --prepare --datadir=/usr/local/mysql/data/
--target-dir=/alldir/</p><p>    mysql> use db5;
mysql> delete from liuwenzhi;

拷贝ibd文件到/usr/local/mysql/data/db5/覆盖
[root@localhost opt]# cp /alldir/db5/liuwenzhi.ibd
/usr/local/mysql/data/db5</p><p>
重启服务
[root@localhost opt]# /etc/init.d/mysqld restart
查看恢复内容(恢复到第一次完整备份的那里)
查看lsn的位置量
[root@localhost opt]# cat /alldir/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 1997713
last_lsn = 1997713
compact = 0
mysql> select * from liuwenzhi;
再恢复第二次增量备份的数据
[root@localhost opt]# xtrabackup_56 --prepare --datadir=/usr/local/mysql/data/
--target-dir=/alldir/ --incremental-dir=/new1/
在拷贝ibd文件到/usr/local/mysql/data/db5/覆盖
[root@localhost opt]#  select * from liuwenzhi;
查看lsn的位置量已更改
[root@localhost opt]# cat /alldir/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 2000761
last_lsn = 200076
compact = 0
第二次恢复同第一次操作一样

每次增量还原后查看cat /alldir/xtrabackup_checkpoints的lsn位置变量是不是变了

最后注意的地方就是:
在还原的时候是要按你每次备份的顺序还原。
如:增量备份1,2,3次。
还原的时候还原第三次的时候,一定是要第二次也要还原的。
这个备份就是靠lsn位的。lsn位有点像mysql的binlog日志所记录的信息差不多,它也有一个标记的位置。
也可以使用binlog日志备份,时间,或者位置变量这两种方法吧。这个不太清除。</p>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: