innobackupex增量備份恢復時的BUG解決方法
http://space./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
|