Innobackupex增量备份恢复BUG,解决方法
来源:互联网 发布:php邮箱的正则表达式 编辑:程序博客网 时间:2024/05/05 11:30
http://space.itpub.net/22664653/viewspace-713127 这位哥们用innobackupex做增量备份时,发生了增量的数据丢失。今天在做增量的时候发现了一个小小过程,算是解决了这个问题。
下面是我的整个过程,如有那个地方是错误的,看过的人麻烦指点小弟。谢啦!! 图片有可能不是很清晰,大家见谅!!
测试环境
我的环境是多实例,所有在下面的参数中传递了defaults-file,基于多实例备份,可以传递个假的配置文件给innobackupex, 这个配置文件中把对应的GNR,改为[mysqld],那么就可以备份了。!
1.完整备份,这是增量备份的基础
innobackupex --defaults-file=/var/lib/my.cnf --user=backup --password=mysql --socket=/tmp/mysql0001.sock --parallel=8 /var/backup/
添加数据
2.增量备份
innobackupex --user=backup --password=mysql --socket=/tmp/mysql0001.sock --defaults-file=/var/lib/my.cnf --parallel=8 --incremental /var/backup/ --incremental-basedir=/var/backup/2012-04-30_08-41-14/ 完整备份目录上做第一次增量备份
如果默认存储引擎是基于MyISAM,那么增量备份时备份的文件分别是.frm、.MYD、.MYI。
如果默认存储引擎是基于InnoDB,那么增量备份时备份的只会是.frm文件,我的配置文件所采用的是独立表空间
note:此过程仅影响XtraDB或基于InnoDB的表,其他带不同存储引擎的表会在增量备份出现时被完全复制
恢复过程也需要用到prepare
首先,提交事务必须重新执行每一个备份
然后,未提交事务必须回退
模拟故障
回滚未提交的事务
innobackupex --defaults-file=/var/lib/my.cnf --apply-log --redo-only /var/backup/2012-04-30_08-41-14/
第一个增量备份应用到完整备份
innobackupex --defaults-file=/var/lib/my.cnf --apply-log --redo-only /var/backup/2012-04-30_08-41-14/ --incremental-dir=/var/backup/2012-04-30_08-42-23/
以上信息都是在增量备份应用到完整备份时输出信息,图一是MyISAM,图二是InnoDB,它们都会创建一个/var/backup/2012-04-30_08-41-14eugene目录,里面的信息都是增量备份的内容。
恢复备份
增量备份只是把增量备份的内容,恢复到新建目录/var/backup/2012-04-30_08-41-14eugene下,而没有恢复到/var/backup/2012-04-30_08-41-14/eugene/ 完整备份目录中的数据库当中去。所以需要手工把文件移动到完整备份的数据库目录当中去,如不执行这步,那么还原回来的数据只是完整备份的数据,而所做的增量就消失了。
千万不要选择y,不然会覆盖掉你表结构。如果选择y,那么你select * from test;会提示这个test表不存在!!!
innobackupex --defaults-file=/var/lib/my.cnf --copy-back /var/backup/2012-04-30_08-41-14
chow -R mysql.mysql /opt/mysql/data/0001/*
/etc/init.d/rc.mysqlmulti start 0001
下面是我的整个过程,如有那个地方是错误的,看过的人麻烦指点小弟。谢啦!! 图片有可能不是很清晰,大家见谅!!
测试环境
我的环境是多实例,所有在下面的参数中传递了defaults-file,基于多实例备份,可以传递个假的配置文件给innobackupex, 这个配置文件中把对应的GNR,改为[mysqld],那么就可以备份了。!
1.完整备份,这是增量备份的基础
innobackupex --defaults-file=/var/lib/my.cnf --user=backup --password=mysql --socket=/tmp/mysql0001.sock --parallel=8 /var/backup/
添加数据
2.增量备份
innobackupex --user=backup --password=mysql --socket=/tmp/mysql0001.sock --defaults-file=/var/lib/my.cnf --parallel=8 --incremental /var/backup/ --incremental-basedir=/var/backup/2012-04-30_08-41-14/ 完整备份目录上做第一次增量备份
如果默认存储引擎是基于MyISAM,那么增量备份时备份的文件分别是.frm、.MYD、.MYI。
如果默认存储引擎是基于InnoDB,那么增量备份时备份的只会是.frm文件,我的配置文件所采用的是独立表空间
note:此过程仅影响XtraDB或基于InnoDB的表,其他带不同存储引擎的表会在增量备份出现时被完全复制
恢复过程也需要用到prepare
首先,提交事务必须重新执行每一个备份
然后,未提交事务必须回退
模拟故障
回滚未提交的事务
innobackupex --defaults-file=/var/lib/my.cnf --apply-log --redo-only /var/backup/2012-04-30_08-41-14/
第一个增量备份应用到完整备份
innobackupex --defaults-file=/var/lib/my.cnf --apply-log --redo-only /var/backup/2012-04-30_08-41-14/ --incremental-dir=/var/backup/2012-04-30_08-42-23/
以上信息都是在增量备份应用到完整备份时输出信息,图一是MyISAM,图二是InnoDB,它们都会创建一个/var/backup/2012-04-30_08-41-14eugene目录,里面的信息都是增量备份的内容。
恢复备份
增量备份只是把增量备份的内容,恢复到新建目录/var/backup/2012-04-30_08-41-14eugene下,而没有恢复到/var/backup/2012-04-30_08-41-14/eugene/ 完整备份目录中的数据库当中去。所以需要手工把文件移动到完整备份的数据库目录当中去,如不执行这步,那么还原回来的数据只是完整备份的数据,而所做的增量就消失了。
千万不要选择y,不然会覆盖掉你表结构。如果选择y,那么你select * from test;会提示这个test表不存在!!!
innobackupex --defaults-file=/var/lib/my.cnf --copy-back /var/backup/2012-04-30_08-41-14
chow -R mysql.mysql /opt/mysql/data/0001/*
/etc/init.d/rc.mysqlmulti start 0001
aa.png(9.51 KB, 下载次数: 1)
转载地址:http://www.itpub.net/thread-1607410-1-2.html
- Innobackupex增量备份恢复BUG,解决方法
- innobackupex全库增量备份与恢复
- innobackupex单表增量备份与恢复
- innobackupex在线备份及恢复(全量和增量)
- innobackupex mysql备份及恢复(全量和增量)
- mysql之 Innobackupex(全备+增量)备份恢复
- innobackupex 备份 Xtrabackup 增量备份
- innobackupex备份恢复详解及详细增量备份及恢复脚本
- innobackupex备份恢复详解
- innobackupex备份恢复使用!
- mysql innobackupex备份恢复
- innobackupex单库增量备份
- innobackupex全量备份+增量备份手记
- [MySQL] innobackupex在线备份及恢复(全量和增量)
- MySQL innobackupex在线备份及恢复(全量和增量)
- [MySQL] innobackupex在线备份及恢复(全量和增量)
- Mysql 增量备份脚本 innobackupex 增量备份 mysql自动备份
- Xtrabackup&Innobackupex备份和恢复
- WebKit Loader模块介绍
- 去掉Activity顶部的黑线
- 关于socket的简单的客户服务端编程
- MFC双缓冲绘图
- 有向图强连通分量tarjan算法
- Innobackupex增量备份恢复BUG,解决方法
- Log4j的使用
- new operaor | operator new 定位 new?
- 10 个有意思的 PHP 教程
- 测试rapidxml与CMarkup
- log4j配置文件完整版
- 学习何时以及如何使用 POSIX AIO API
- 8086中的jmp指令
- MySQL权限的架构体系