xtrabackup备份工具

xtrabackup备份工具

创新互联公司长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为诸城企业提供专业的网站建设、成都做网站,诸城网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

 下载地址 https://www.percona.com/downloads/XtraBackup/LATEST/ 

Xtrabackup有两个主要的工具:xtrabackup、innobackupex 

 1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表 ,不能备份表结构

 2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的.innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的 同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。 

 

 

 

xtrabackup

 

 

备份时常规参数

--defaults-file=# 

默认配置文件的路径,如果不该参数,xtrabackup将从依次从以下位置查找配置文件/etc/my.cnf、/etc/MySQL/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,并读取配置文件中的[mysqld]和[xtrabackup]配置段。[mysqld]中只需要指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_log_files_in_group、innodb_log_file_size6个参数即可让xtrabackup正常工作。 

--defaults-extra-file=# 

如果使用了该参数,在读取了全局配置文件之后,会再读取这里指定的配置文件 

--target-dir=name 

备份文件的c目录路径 

--backup 

实施备份到target-dir 

--prepare 

实施对备份文件进行恢复前的准备(生成InnoDB log file) 

--print-param 

打印备份或恢复时需要的参数 

--use-memory=# 

该参数在 prepare的时候使用,控制prepare时innodb实例使用的内存量 

--suspend-at-end 

在target-dir目录下产生一个xtrabackup_suspended文件,将xtrabackup进程挂起,不停地将数据文件的变化同步到备份文件,直到用户手工删除xtrabackup_suspended文件 

--throttle=# 

每秒IO次数,限制backup时使用的I/O操作量,使备份对数据库正常业务的影响最小化 

--log-stream 

该参数在backup的时候使用,将xtrabackup_logfile的内容输出到标准输出,使用该参数时会自动使用suspend-at-end参数,innobackupex脚本的stream模式会使用该参数。 

--incremental-lsn=name 

增量备份时只拷贝LSN比该参数指定值新的ibd pages,前次备份到了哪个LSN可以看前次备份集的xtrabackup_checkpoints文件 

--incremental-basedir=name 

该参数在backup的时候使用,备份比该参数指定位置的备份集新的idb pages 

--incremental-dir=name 

该参数在prepare的时候使用,指定prepare时产生的.delta文件和日志文件的存放路径 

--databases=name

--tables=name 

在备份file-per-table类型的数据文件时使用,使用正则表达式指定需要备份的innodb表 

--datadir=name 

MySQL数据库的数据文件目录。 

--stream 

生成压缩文件,速度比较慢

 

全备的备份还原:

xtrabackup  --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf  --backup  --target-dir=/data/bak_test/1

 

 

xtrabackup备份工具

给备份做恢复前准备。

xtrabackup  --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf  --prepare  --target-dir=/data/bak_test/1

 

xtrabackup备份工具

 

 

增量备份:

 

xtrabackup备份工具

 

给增量备份做恢复前准备

xtrabackup --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --prepare --target-dir=/data/bak_test/2

xtrabackup备份工具

拷贝备份到数据库目录下

xtrabackup备份工具

修改权限并重启数据

xtrabackup备份工具

重启

 

xtrabackup备份工具

innobackupex 

 

常规参数

--defaults-file 

同xtrabackup的--defaults-file参数 

--apply-log 

对xtrabackup的--prepare参数的封装 

--copy-back 

做数据恢复时将备份数据文件拷贝到MySQL服务器的datadir; 

--remote-host=HOSTNAME 

通过ssh将备份数据存储到进程服务器上; 

--stream=[tar] 

备份文件输出格式, tar时使用tar4ibd ,该文件可在XtarBackup binary文件中获得.如果备份时有指定--stream=tar,则tar4ibd文件所处目录一定要在$PATH中(因为使用的是tar4ibd去压缩,在XtraBackup的binary包中可获得该文件)。 

在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可以通过参数--tmpdir指定目录来解决这个问题。 

--tmpdir=DIRECTORY 

当有指定--remote-host or --stream时,事务日志临时存储的目录,默认采用MySQL配置文件中所指定的临时目录tmpdir 

--redo-only --apply-log组, 

强制备份日志时只redo ,跳过rollback。这在做增量备份时非常必要。 

--use-memory=# 

该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量 

--throttle=IOS 

同xtrabackup的--throttle参数 

--sleep=是给ibbackup使用的,指定每备份1M数据,过程停止拷贝多少毫秒,也是为了在备份时尽量减小对正常业务的影响,具体可以查看ibbackup的手册 ; 

--compress[=LEVEL] 

对备份数据迚行压缩,仅支持ibbackup,xtrabackup还没有实现; 

--include=REGEXP 

对xtrabackup参数--tables的封装,也支持ibbackup。备份包含的库表,例如:--include="test.*",意思是要备份test库中所有的表。如果需要全备份,则省略这个参数;如果需要备份test库下的2个表:test1和test2,则写成:--include="test.test1|test.test2"。也可以使用通配符,如:--include="test.test*"。 

--databases=LIST 

列出需要备份的databases,如果没有指定该参数,所有包含MyISAM和InnoDB表的database都会被备份; 

--uncompress 

解压备份的数据文件,支持ibbackup,xtrabackup还没有实现该功能; 

--slave-info, 

备份从库,加上--slave-info备份目录下会多生成一个xtrabackup_slave_info文件,这里会保存主日志文件以及偏移,文件内容类似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0 

--socket=SOCKET 

指定mysql.sock所在位置,以便备份进程登录mysql. 

 

--databases=name

指定要备份的库

--tables=name 

在备份file-per-table类型的数据文件时使用,使用正则表达式指定需要备份的innodb表 

--incremental-basedir=上一个备份目录

--incremental  增量备份

 

全备 innobackupex  --user=root --password=xxxxx--defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf  /data/bak_test/3 

 

xtrabackup备份工具

恢复前的准备   xtrabackup  --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf  --prepare  --target-dir=/data/bak_test/3/2015-05-28_09-59-28

xtrabackup备份工具

apply-log,为了加快速度,一般建议设置--use-memory,这个步骤完成之后,目录/backup/mysql/data/2013-10-29_09-05-25下的备份文件已经准备就绪

xtrabackup备份工具

拷贝数据到数据库数据目录下对文件进行权限修改启动数据。

增量备份:

增量备份需要基于全备,先假设我们已经有了一个全备(x )或基于上一个增量备份之上,在该全表的基础上做增量备份。

 

--defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf --user=root --password=xxxx  --incremental-basedir=/data/bak_test/3/2015-05-28_10-23-35 --incremental /data/bak_test/

xtrabackup备份工具

曾备的还原

模式

innobackupex --apply-log --redo-only BASE-DIR

innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1

innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2

其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。

第一步是在所有备份目录下重做已提交的日志

innobackupex --apply-log --redo-only /data/bak_test/3/2015-05-28_10-23-35

xtrabackup备份工具

innobackupex --apply-log --redo-only /data/bak_test/3/2015-05-28_10-23-35 --incremental-dir=/data/bak_test/2015-05-28_10-34-11

xtrabackup备份工具

 

回滚未完成的日志:

innobackupex --apply-log /data/bak_test/3/2015-05-28_10-23-35

xtrabackup备份工具

准备数据 prepare  ,恢复前的准备  xtrabackup  --defaults-file=/data/work/mysql-5.5.38/data/mysql3306/my3306.cnf  --prepare  --target-dir=/data/bak_test/3/2015-05-28_10-23-35

拷贝数据到数据库目录下并修改权限启动数据即可。


当前文章:xtrabackup备份工具
网页链接:http://pwwzsj.com/article/gggoed.html