mysqlbackup xtrabackup
(RHEL6X86_64 )
我以前对mysql的备份进行了简单的测试,并与大家共享
目前,关于MySQL备份工具最流行的主要有三个
1.xtra backup---- percona开放资源
2.MySQL backup---- MySQL企业版
3.MySQL----MySQL附带工具
三种工具支持热备盘;全装备和增强。
附带的mysqldump备份速度慢,备份的是作为sql语句的DDL insert,追加使用的是mysqlbinlog,必须打开二进制记录;
xtrabackup中使用了ib_logfile和. ibd文件
mysqlbackup不仅提供ib_logfile文件,还提供ib_logfile和. ibd文件。 主要介绍两个工具: mysqlbackup和xtrabackup。 以下是不同之处:
功能
Percona XtraBackup
MySQL企业备份
(InnoDB Hot Backup )
许可
通用航空
属性
普莱斯
自由号
includedinsubscriptionat $ 5000 per server
开放资源
流和加密格式
开放资源
属性
支持的MySQL flavors
Percona Server,MySQL,MariaDB
MySQL
非阻塞innodb backups 1
Blocking MyISAM backups
增量备份
完全压缩备份
增量压缩备份
快速增量备份2
增量备份窗口itharchivedlogs
备份锁定8
(虽然Percona写为NO,但从mysqlbackup文档与Percona的对比来看,它也应该针对非嵌入式读取锁定。)
加密备份
流备份
并行本地备份
并行流备份
并行压缩
并行加密
并行应用日志
并行副本后退
粒子备份
Throttling 4
时间点恢复支持
安全从属备份
压缩备份5
缓冲池状态备份
individual tables导出
individual partitions导出
restoringtablestoadifferentserver 7
数据索引文件统计信息
innodbsecondaryindexesdefragmentation
rsync支持到minimize lock time
经验证的ftwrl处理
备份历史表
备份进度表
Offline备份
tapebackupswithoraclesecurebackup
2 .备份工具比较
功能
MySQL备份
xtra备份
mysqldump
全装备
确认了传球
确认了传球
确认了传球
增备
确认了传球
确认了传球
未验证
备份/导出单个(指定)表
确认了传球
确认了传球
确认了传球
增量恢复
已验证pass
已验证pass
未验证
全量恢复
已验证pass
已验证pass
未验证
压缩
已验证pass
已验证pass
未验证
Tape backup
已验证pass
N/A
N/A
Aws cloude storage
未验证
N/A
N/A
Parallel backup
已验证pass
已验证pass
N/A
注:1.tts mysqlbackup 不支持分区表的导出
2.mysqlbackup压缩也仅仅支持全备,不支持增量(除了image文件--及tape需要的格式)
3.tapebackup mysqlbackup仅支持page-size=16k 不支持8K的page-size
3. mysqlbackup和xtrabackup备份性能对比
测试环境:10.45.53.6 mysql/mysql
存储V7000
对ccv80ch库进行备份,库占用大小:14735MB
默认不使用parallel options(mysqlbackup默认1:6:1)
全备
Cpu
Time cost
File size
iops
util
Mysqlbackup
3%
72s
6195MB
3800
≈100%
xtrabackup
2%
94
6184MB
680
≈100%
增备的前置条件为:update subs set update_date=now();
update acct set update_date=now();
每个表存在100W数据
增备
Cpu
Time cost
File size
iops
util
Mysqlbackup
2%
43s
286MB
3600
≈100%
xtrabackup
2%
272s
386MB
500
≈16%
数据分析:
全备其中相差的部分为其他库的frm文件,mysqlbackup include会拷贝除指定库外其他库的frm文件;
增备其中相差部分是xtrabackup生成了.delta,.meta(每个frm都对应一个),而mysqlbackup,只生成了产生数据变更的sub和acct表的.idb文件
Parallel 备份
Cpu
Time cost
File size
iops
util
Mysqlbackup
12
73s
6493MB
3900
100
xtrabackup
28
51s
6482MB
1900
100
数据分析:
mysqlbackup和xtrabackup的并发机制并不一样导致了这种结果,
mysqlbackup的并发指的是读写线程的并发,即在io足够的情况下分配多个cpu线程;
xtrabackup的并发是file level级别的通常指的就是一次批量的copy ibd文件之类;
通过xtrabackup可以提升备份性能
4. mysqlbackup和xtrabackup恢复性能对比
这里的恢复主要指的是apply-log(因为通常情况下不会使用到最后一步copy-log,而copy-log的实质就是一个copy paste的过程只有在真正数据库坏了的时候才会使用到)
Apply-log
Cpu
Time cost
File size
iops
util
Mysqlbackup
3%
35s
14387MB
788
≈100%
xtrabackup
2%
31s
14387MB
783
≈100%
apply-log其中相差部分是
xtrabackuk生成的一些xtrabackup_binlog_info, xtrabackup_binlog_pos_innodb,
xtrabackup_checkpoints,xtrabackup_info文件
性能基本一致
5. 备份锁测试
lock/default
fullbackup
increment backup
single table exp/imp
mysqlbackup
none
none
yes(--use-tts=(table metadata lock)
xtrabackup
none
none
yes(default) use --no-lock can diable lock 参考
2.2.3文档page37 --no-lock()
mysqldump
yes
None
yes(table-level) 但是可以禁用--single-transaction
经过验证(innodb)得出如上表格结论:
全量备份中除了mysqldump存在锁,mysqlbackup和mysqlbackup都不存在锁;
增量不存在锁(mysqldump是通过binlog,其他两个不是)
对于tts即单表表的导入导出,经过测试发现mysqlbackup存在锁虽然是粒度很小的read lock,但是未发现有参数可以禁用,但是对于xtrabackup和mysqldump虽然默认有锁,但是可以disable掉。
6. 建议和讨论
1.对于全量和增量备份使用mysqlbackup enterprise
2.对于单表的导入导出,数据量小建议使用mysqldump,比较方便;数据量较大例如分区表之类建议使用xtrabackup,虽然比较麻烦但是对系统性能影响更小效率更高
3.对于tape的支持oracle的SBT 是否存在这种需求,若则page-szie必须为16K
4.对于aws cloud storage的功能是否存在需求
5.对于增量的备份mysqlbackup默认2种方法一种是普通的不加参数的,另一种则是--incremental-redo-log-only
这是几年前的文章,如有问题请与指正