ibbackup参考手册

                            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

 

 

 


你可能感兴趣的:(c,mysql,数据库,user,perl,存储)