北京白癜风治疗最好医院 http://www.wangbawang.com/作者:杨涛涛
资深数据库专家,专研MySQL十余年。擅长MySQL、PostgreSQL、MongoDB等开源数据库相关的备份恢复、SQL调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供MySQL相关技术支持、MySQL相关课程培训等工作。
本文来源:原创投稿*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
这篇我们来简单介绍下MySQL8.0.21附带的增强版逻辑备份工具。
在介绍这个工具之前,先来回顾下MySQL的逻辑备份工具历史。
1.mysqldump:最早,也是最成熟的逻辑备份工具,是MySQL原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具,上手简单,学习成本几乎为0。备份简单,恢复也简单。
比如导出单个数据库ytt:mysqldumpytt/tmp/ytt.sql;
恢复也非常简单:mysql/tmp/ytt.sql
缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。
2.mysqlpump:MySQL5.7GA后推出的mysqldump工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。
其他缺点和mysqldump一样。
3.MySQLShellUTIL对象附带的备份工具:随MySQL8.0.21最新版本捆绑发布,自带多线程备份以及多线程恢复功能,可以直接替代mysqldump/mysqlpump。
dump_instance/dumpInstance用来多线程备份MySQL整个单机实例dump_schemas/dumpSchemas用来多线程备份MySQL单个数据库load_dump/loadDump用来多线程恢复之前两个工具导出的数据集文件MySQLShellUTIL备份恢复工具具备如下特性:
1.压缩导出(默认压缩算法zstd)
2.数据集分块导出,每块32M
3.默认导出存储过程、存储函数、触发器、事件、用户、视图
4.默认4个线程导出
5.默认进度展示
6.默认字符集utf8mb4
7.默认开启一致性导出
8.默认表,视图等定义导出为SQL语句
9.默认数据导出为TSV格式数据
接下来,我们来简单演示下MySQLSHELLUTIL备份恢复工具,以下我基于PYTHON语法:
1.dump_instance示例
具体参数:(4个线程同时备份数据库ytt)
#备份路径backup_path=/tmp/ytt_backup_instance;#备份选项,定义一致性,不包含哪些数据库,线程数等等。backup_options={consistent
rue,threads:4,excludeSchemas:[world,ytt_new,score,query_rewrite]}
以下为备份结果信息汇总,其中包含备份时间,备份数据集原始大小,压缩后大小,压缩率以及压缩速度等信息。
Duration:00:00:35s
Schemasdumped:1
Tablesdumped
Un