MySQL备份与恢复方案验证

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: MySQL备份与恢复方案验证http://www.bieryun.com/3351.html mysqlbackup+xtrabackup (RHEL6X86_64) 之前针对mysql的备份做了个简单测试,与大家分享下          目前关于MySQL备份工具最流行的主要有三种 1.xtrabackup  -----Percona opensource 2.mysqlbackup -----mysql Enterprise 3.mysqldump -----mysql 自带工具 三种工具都支持热备;全备和增备。


mysqlbackup+xtrabackup

(RHEL6X86_64)

之前针对mysql的备份做了个简单测试,与大家分享下

         目前关于MySQL备份工具最流行的主要有三种

1.xtrabackup  -----Percona opensource

2.mysqlbackup -----mysql Enterprise

3.mysqldump -----mysql 自带工具

三种工具都支持热备;全备和增备。

对于自带的mysqldump备份速度比较慢,备份出来的为sql语句即DDL+insert,增备利用的是mysqlbinlog,必须要开启二进制日志;

对于xtrabackup它利用的是ib_logfile和.ibd文件

对于mysqlbackup来说它可以只利用ib_logfile文件也可以利用ib_logfile和.ibd文件,主要介绍mysqlbackup和xtrabackup两种工具,如下是它们之间的一些异同点:

Feature Percona XtraBackup MySQL Enterprise Backup
(InnoDB Hot Backup)
License GPL Proprietary
Price Free Included in subscription at $5000 per Server
Open source    
Streaming and encryption formats Open source Proprietary
Supported MySQL flavors Percona Server, MySQL, MariaDB MySQL
Non-blocking InnoDB backups 1    
Blocking MyISAM backups    
Incremental backups    
Full compressed backups    
Incremental compressed backups    
Fast incremental backups 2    
Incremental backups with archived logs    
Backup locks 8    (虽然Percona写NO,但是从mysqlbackup的文档和Percona的对比,也应该是有的对于non-innodb read lock)
Encrypted backups    
Streaming backups    
Parallel local backups    
Parallel streaming backups    
Parallel compression    
Parallel encryption    
Parallel apply-log    
Parallel copy-back    
Partial backups    
Throttling 4    
Point-in-time recovery support    
Safe slave backups    
Compact backups 5    
Buffer pool state backups    
Individual tables export    
Individual partitions export    
Restoring tables to a different server 7    
Data & index file statistics    
InnoDB secondary indexes defragmentation    
rsync support to minimize lock time    
Improved FTWRL handling    
Backup history table    
Backup progress table    
Offline backups    
Tape backups with Oracle Secure Backup    

 

2. 备份工具对比

功能 Mysqlbackup xtrabackup mysqldump
全备 已验证pass 已验证pass 已验证pass
增备 已验证pass 已验证pass 未验证
单(指定)表备份/导出 已验证pass 已验证pass 已验证pass
增量恢复 已验证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

这是几年前的文章,如有问题请与指正

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
运维 监控 关系型数据库
MySQL高可用方案:MHA与Galera Cluster对比
本文深入对比了MySQL高可用方案MHA与Galera Cluster的架构原理及适用场景。MHA适用于读写分离、集中写入的场景,具备高效写性能与简单运维优势;而Galera Cluster提供强一致性与多主写入能力,适合对数据一致性要求严格的业务。通过架构对比、性能分析及运维复杂度评估,帮助读者根据自身业务需求选择最合适的高可用方案。
|
7月前
|
存储 关系型数据库 MySQL
修复.net Framework4.x连接MYSQL时遇到utf8mb3字符集不支持错误方案。
通过上述步骤大多数情况下能够解决由于UTF-encoding相关错误所带来影响,在实施过程当中要注意备份重要信息以防止意外发生造成无法挽回损失,并且逐一排查确认具体原因以采取针对性措施解除障碍。
411 12
|
7月前
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
555 10
|
12月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
9月前
|
存储 关系型数据库 MySQL
【赵渝强老师】使用select...into outfile语句备份MySQL
本文介绍了MySQL中使用`SELECT...INTO OUTFILE`语句将表数据导出为文本文件的方法。通过示例演示了如何备份员工表(emp)的数据,包括创建存储目录、设置权限、配置参数`secure_file_priv`以及解决相关错误的过程。字段分隔符和行终止符可自定义,确保数据格式符合需求。最后展示了备份文件的内容,验证操作成功。
591 36
|
8月前
|
SQL 关系型数据库 MySQL
解决MySQL "ONLY_FULL_GROUP_BY" 错误的方案
在实际操作中,应优先考虑修正查询,使之符合 `ONLY_FULL_GROUP_BY`模式的要求,从而既保持了查询的准确性,也避免了潜在的不一致和难以预测的结果。只有在完全理解查询的业务逻辑及其后果,并且需要临时解决问题的情况下,才选择修改SQL模式或使用 `ANY_VALUE()`等方法作为短期解决方案。
903 8
|
7月前
|
监控 NoSQL 关系型数据库
保障Redis与MySQL数据一致性的强化方案
在设计时,需要充分考虑到业务场景和系统复杂度,避免为了追求一致性而过度牺牲系统性能。保持简洁但有效的策略往往比采取过于复杂的方案更加实际。同时,各种方案都需要在实际业务场景中经过慎重评估和充分测试才可以投入生产环境。
389 0
|
9月前
|
存储 SQL 关系型数据库
【赵渝强老师】使用mysqldump备份MySQL
本文介绍了 MySQL 自带的逻辑备份工具 mysqldump 的使用方法。通过 mysqldump,可以将数据库中的数据转换为对应的 SQL 插入语句,便于备份和还原。文章详细说明了如何备份所有数据库、指定数据库及特定表,排除某些表不备份的操作,以及删除数据库后如何通过备份文件恢复数据。同时提供了视频讲解和具体命令示例,帮助用户更好地理解和应用该工具。
913 5
|
8月前
|
关系型数据库 MySQL Java
MySQL 分库分表 + 平滑扩容方案 (秒懂+史上最全)
MySQL 分库分表 + 平滑扩容方案 (秒懂+史上最全)
|
11月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
509 28