本帖最后由 出VU时代 于 2016-9-10 21:11 编辑
- <p>下载地址:
- 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>
编辑回复