ibbackup参考手册
一.关于ibbackup
1.注册相关
ibbackup是一个收费的备份软件,在购买的时候,需要注册,比如填写使用该软件的主机名,然后,会自动把购买者填写的主机名写入到ibbackup这个二进制文件里面。然后就可以下载使用了。所以说,ibbackup是把注册的主机名“刻录”到其中的。
2.软件结构
该软件由 ibbackup innobackup 主要这两部分组成
其中ibbackup 是主要的备份软件。(可执行文件)
Innobackup 是一个perl脚本。它会调用ibbackup来执行备份
3.支持的备份
在线备份、增量备份、全量备份...
二.备份基本原理
创建备份文件夹,然后通过读取my.cnf获取数据文件和事物日志文件的大小、个数、路径等信息。
1.复制innodb日志文件
1)记录一个checkpoint之前的LSN,并从该LSN开始,复制到最近的checkpointLSN结束的所有事物日志。并记录这两个LSN。比如
start lsn 3 35257344, end lsn3 35257702
其中 checkpoint 对应 LSN 为 3 35257702
2)从复制开始到结束,对于备份好的innodb日志文件的回滚信息,只有部分日志文件有必要被复制和覆盖。
2.复制数据文件及索引
1)依次复制ibdata文件、ibd文件
ibbackup 通过对 InnoDB 数据文件进行压缩、复制完成备份。
2)备份文件能被压缩70%--90%。之所以能压缩这么多,是因为,在做备份时,复制数据文件的过程中,会忽略存储于每个block中没有使用的存储空间以及忽略没有使用的空页(empty page)。(注意压缩级别也是可以设置的,ibbackup分为0—9个压缩级别,默认为1)
3)当数据文件被复制和压缩的时,最新的LSN和最旧的LSN会被记录。
3.备份MyISAM表
备份MyISAM会使用innobackup。(这个操作会连接mysqlserver)
1)sql flush tables with read lock ;刷表并设只读锁表
2)myisam表 &&indexes,表定义.frm等文件被mysqlbackup备份
4.备份innodb日志文件
因为在备份数据文件的时间,会有新的数据被更改,产生新的LSN,所以需要备份这段时间的innodb日志文件。比如
start lsn 3 35257702, end lsn3 35257722
其中,lsn 3 35257702 就是二.1.1)中提到的checkpoint
三.恢复基本原理
1.解压数据文件到数据目录
2.应用innodb logfile 到数据文件中,确保数据一致性
3.重建innodb logfile (在2的基础上产生)
4.恢复myisam及其它文件
在恢复的过程中,不是从lsn 3 35257702开始恢复(虽然35257702是checkpoint),而是从35257344开始一直恢复到35257722.
四.使用方法
1. 执行备份
perlinnobackup --user=user_name --password=user_password --ibbackup=/home/longxibendi/backup/ibbackup /etc/my.cnf /home/longxibendi/back_up/
上面的参数可以用innobackup –help 查看
其中 user是数据库用户名,password是数据库密码,ibbackup是可执行的备份文件,my.cnf是MySQL配置文件,/home/longxibendi/back_up 是备份后的文件所在目录。实际上,会在back_up下再建立以当前时间为参数的var文件夹,其中存放的备份文件。比如
Back_up/var. 20110812140418
执行这个备份之后产生的文件有(为了对比方便,这里列出了对应文件md5值)
69230a608907c16f4022dec4db8a8325 ./backup-my.cnf
4aebba1ba15cbf2eeffd3c88bb3176f7 ./ibbackup_binlog_info
e2eab75f272632e91862c804b75504ec ./ibbackup_logfile
703122eefe9cf5b8df33e4ae54c0993f ./ibdata1
md5sum: ./longxibendi: Is adirectory
md5sum: ./mysql: Is adirectory
d41d8cd98f00b204e9800998ecf8427e ./mysql-stderr
c311dd124e0701040e1faef783f67f6f ./mysql-stdout
md5sum: ./test: Is adirectory
2.应用事务日志
上面四.1进行了全备份,但是在备份过程中可能产生了写操作,这就需要应用刚备份的事物日志执行前滚操作,把数据从innodb ib_logfile写入到data文件中。在此过程中会产生新的ib_logfile,删除备份之后的ib_logfile。
perl innobackup --applay-log--user=user_name --password=user_password --ibbackup=/home/longxibendi/backup/ibbackup /etc/my.cnf /home/longxibendi/back_up/var.20110812140418
应用重做日志之后,产生的文件如下(前面是对应的MD5值)
69230a608907c16f4022dec4db8a8325 ./backup-my.cnf
4aebba1ba15cbf2eeffd3c88bb3176f7 ./ibbackup_binlog_info
e2eab75f272632e91862c804b75504ec ./ibbackup_logfile
4f34f7f4c6913fb88b0671765ac6c455 ./ibdata1
06b01370cc9e7c8547211348a0d8ac07 ./ib_logfile0
3566de3a97906edb98d004d6b947ae9b ./ib_logfile1
3566de3a97906edb98d004d6b947ae9b ./ib_logfile2
md5sum: ./longxibendi: Is adirectory
md5sum: ./mysql: Is adirectory
d41d8cd98f00b204e9800998ecf8427e ./mysql-stderr
c311dd124e0701040e1faef783f67f6f ./mysql-stdout
md5sum: ./test: Is adirectory
从上面结果得知,使用—applay-log 之后,会应用ibbackup_logfile文件执行前滚ibdata文件,并产生ib_logfile 。
五.企业级使用
在使用过程中,需要先修改主机名,执行备份,再修改主机名恢复原主机名。
声明:本文档可以随意更改,但必须署名原作者
作者:凤凰舞者 qq:578989855