作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

这篇我们来简单介绍下 MySQL 8.0.21 附带的增强版逻辑备份工具。

在介绍这个工具之前,先来回顾下 MySQL 的逻辑备份工具历史。

1.mysqldump:最早,也是最成熟的逻辑备份工具,是 MySQL 原生的用来备份整个数据库实例、单个数据库、单张表的逻辑备份工具, 上手简单,学习成本几乎为 0。备份简单,恢复也简单。

比如导出单个数据库 ytt: mysqldump ytt > /tmp/ytt.sql;

恢复也非常简单:mysql

缺点是备份速度慢。在整个备份过程中,是单线程运行;备份出来的数据集要恢复的话同样也是单线程运行,恢复速度也慢。除非对同一时刻的所有表单独备份出来,自己写额外脚本进行多线程恢复。

2.mysqlpump:MySQL 5.7 GA 后推出的 mysqldump工具的增强版。可以对同一个数据集多个线程并发备份,备份速度很快。

其他缺点和 mysqldump 一样。

3.MySQL Shell UTIL对象附带的备份工具:随 MySQL 8.0.21 最新版本捆绑发布,自带多线程备份以及多线程恢复功能, 可以直接替代 mysqldump/mysqlpump。

dump_instance/dumpInstance 用来多线程备份 MySQL 整个单机实例

dump_schemas/dumpSchemas 用来多线程备份 MySQL 单个数据库

load_dump/loadDump 用来多线程恢复之前两个工具导出的数据集文件

MySQL Shell UTIL 备份恢复工具具备如下特性:

1. 压缩导出(默认压缩算法 zstd)

2. 数据集分块导出,每块 32M

3. 默认导出存储过程、存储函数、触发器、事件、用户、视图

4. 默认 4 个线程导出

5. 默认进度展示

6. 默认字符集 utf8mb4

7. 默认开启一致性导出

8. 默认表,视图等定义导出为 SQL 语句

9. 默认数据导出为 TSV 格式数据

接下来,我们来简单演示下 MySQL SHELL UTIL 备份恢复工具,以下我基于 PYTHON 语法:

1.dump_instance 示例

具体参数:(4 个线程同时备份数据库 ytt)

# 备份路径backup_path='/tmp/ytt_backup_instance';

# 备份选项,定义一致性,不包含哪些数据库,线程数等等。backup_options = {"consistent":True,"threads":4,"excludeSchemas":["world","ytt_new","score","query_rewrite"]}

以下为备份结果信息汇总,其中包含备份时间,备份数据集原始大小,压缩后大小,压缩率以及压缩速度等信息。

Duration: 00:00:35sSchemas dumped: 1Tables dumped: 8Uncompressed data size: 584.89 MBCompressed data size: 12.02 MBCompression ratio: 48.7Rows written: 28000016Bytes written: 12.02 MBAverage uncompressed throughput: 16.49 MB/sAverage compressed throughput: 338.96 KB/s

再来查看备份路径下的文件,

.json 后缀的为元数据文件,比如备份开始时间,备份结束时间,备份的用户,每张表的数据字典等信息。

剩下的即为备份的数据集,默认 ZSTD 压缩。

2.dump_schemas

dump_instance 主要用来备份整个 MySQL 实例,如果只想备份单个数据库,用 dump_schemas 更加简单。

dump_schemas 参数除了要指定具体的数据库名,其余的参数和 dump_instance 一样

# 备份指定的数据库backup_schema = ["ytt"]

# 备份路径backup_path='/tmp/ytt_backup_schemas';

# 备份选项backup_options = {"consistent":True,"threads":4}

以下为 dump_schemas 备份的结果和 dump_instance 一样。

Duration: 00:00:32sSchemas dumped: 1Tables dumped: 8Uncompressed data size: 584.89 MBCompressed data size: 12.02 MBCompression ratio: 48.7Rows written: 28000016Bytes written: 12.02 MBAverage uncompressed throughput: 18.15 MB/sAverage compressed throughput: 373.01 KB/s

3.load_dump

备份好了后,用 load_dump 恢复下数据库 ytt 的备份集,

# 删除原数据库mysql> drop database ytt;Query OK, 8 rows affected (0.27 sec)

# 创建指定数据库ytt.mysql> create database ytt;Query OK, 1 row affected (0.01 sec)

# 用于恢复的备份集目录restore_url = '/tmp/ytt_backup_schemas'

# 恢复选项:是否对恢复的表做样例数据收集,是否延迟建立索引,恢复指定的数据库等。restore_options={"analyzeTables":"on","deferTableIndexes":"all","includeSchemas":["ytt"]}

恢复过程如下:

这里要说明下,load_dump 恢复数据的线程数量取决于之前备份集的线程数量。

恢复信息,由于笔记本虚拟机性能太差,数据仅供参考。

Executing common postamble SQL

40 chunks (28.00M rows, 584.89 MB) for 6 tables in 1 schemas were loaded in 3 min 30 sec (avg throughput 2.79 MB/s)0 warnings were reported during the load.

总结:

本篇介绍了 MySQL 8.0.21 发布的高性能逻辑备份恢复工具,可以完美替换性能低下的传统备份工具 mysqldump 或者 mysqlpump。

mysql 8.0数据备份恢复_MySQL 8.0 增强逻辑备份恢复工具介绍-爱可生相关推荐

  1. 手机助手无法启动备份服务器,华为手机助手备份数据无法恢复怎么办?华为手机助手备份数据无法恢复教程...

    相信很多华为手机用户,都有开通手机云备份这一功能,让手机上的数据定期自动备份,以免自己在使用过程中,不小心误删了重要数据.可是,有些用户反映自己利用华为手机助手备份的数据无法恢复. 那么,出现这样的问 ...

  2. 重新装Mysql后原来数据的恢复办法

    重新装Mysql后原来数据的恢复办法 本博客:http://blog.csdn.net/xiaowu_zhu/article/details/71188955 不管是重新装系统或者数据库时,总会遇到怎 ...

  3. mysql几种备份恢复_mysql多种备份与恢复方式一

    通过binlog时间区间/偏移量进行恢复 mysqlbinlog [选项] binlog日志文件名 | mysql -uroot -p 选项 --start-datetime="yyyy-m ...

  4. mysql gtid 备份恢复_MYSQL数据库备份恢复

    在实例存活的情况,可以在实例状态中查询ALL_GTID. 在实例崩溃的情况,无法在实例状态中查询ALL_GTID.可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID. ...

  5. mysql从挂了数据怎么恢复_详解MySQL误操作后怎样进行数据恢复

    一.开启binlog. 首先查看binlog是否开启 mysql> show variables like "log_bin"; +---------------+----- ...

  6. mysql被删库如何恢复_mysql整个数据库被删除了怎么恢复

    展开全部 每个 DBA 是不是都有过删库的经e68a84e8a2ad62616964757a686964616f31333433626437历?删库了没有备份怎么办?备份恢复后无法启动服务什么情况?表 ...

  7. mysql版本升级对数据的影响_MySQL数据库升级的一些坑

    对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,陷入是一场硬仗.而在MySQL方向上,升级这件事情就被淡化了许多,好像只能证明它的存 ...

  8. mysql英文版数据库备份方法_mysql数据库太大了如何备份与还原

    命令:mysqlhotcopy 这个命令会在拷贝文件之前会把表锁住,并把数据同步到数据文件中,以避免拷贝到不完整的数据文件,是最安全快捷的备份方法. 命令的使用方法是: mysqlhotcopy -u ...

  9. mysql 8.0 手动安装教程_mysql 8.0.13手动安装教程

    本文为大家分享了mysql 8.0.13手动安装教程,供大家参考,具体内容如下 一.步骤解读 1.下载MySQL 下载地址 选择 Downloads-->Community-->MySQL ...

最新文章

  1. LINUX基本命令行手册一
  2. NXT节点搭建(三)安装Nxt客户端
  3. 全国计算机等级考试一级教程讲义资料,计算机等级考试一级教程讲义.docx
  4. 计算机科学 在职双证,计算机专业在职研究生如何获得双证?
  5. 手机进水急救——爆米花可用来吸干水分
  6. Yii2.0 对数据库 查询的一些简单的操作
  7. IKAnalyzer实现扩展词库+动态更新词库的方法
  8. hdoj1176:免费馅饼(dp基础题-数塔思想)
  9. 世界时区缩写及代表的地区
  10. Yii2 ActiveForm修改表单样式
  11. Moore-Penrose广义逆(加号广义逆)定义及相关性质
  12. FlashFXP用到的功能
  13. oracle数据库应用(2)
  14. 计算机b级考试题型分值分布,大学英语四级考试题型和分值分配
  15. PHP+SQL考勤系统安全性的设计与实现
  16. RGB-D、TOF深度相机的原理
  17. Python语言程序设计(MOOC崇天)第三章基本数据类型学习笔记(天天向上的力量+文本进度条)
  18. TCP粘包、半包原理及解决方案
  19. 流量监控服务器应该位置在哪里,搭建cacti流量监控服务器.pdf
  20. MYSQL RR级别是否能解决幻读问题

热门文章

  1. ssh重装ubuntu_ubuntu 安装 ssh
  2. php菲波那切数列,php如何实现菲波那切数列
  3. hiberanate 主键查询慢_mysql查询优化,1万条数据居然要30秒
  4. python token 访问控制_python 产生token及token验证
  5. TCP文件上传Java_java 基于TCP协议的文件上传
  6. java sqlmap_sqlmap 学习指南
  7. systemverilog数据类型
  8. XML文件中url路径中失效解决办法
  9. python csv数据处理_Python数据处理(1) —CSV文件数据处理
  10. 网页中加载obj模型比较慢_R语言估计时变VAR模型时间序列的实证研究分析案例...