介绍
MySQL Shell 是 MySQL 的高级命令行客户端和代码编辑器。除了 SQL,MySQL Shell 还为 JavaScript 和 Python 提供脚本功能。当 MySQL Shell 通过 X 协议连接到 MySQL 服务器时,X DevAPI 可用于处理关系数据和文档数据。
MySQL Shell 8.0.21 包括一些新的易用、高性能和集成的工具(MySQL Shell Dump & Dump Loading Utility)用来创建逻辑转储和执行逻辑还原。该序列工具以 MySQL Shell 8.0.17 中引入的多线程 CSV 导入工具 util.importTable() 为基础构建以便轻松转储和加载整个数据库实例或一组 schema。该序列工具包括:
util.dumpInstance():转储整个数据库实例,包括用户
util.dumpSchemas():转储一组数据库 schema
util.loadDump():将转储加载到目标数据库中
主要特色功能包括:
多线程转储,将较大的表分成较小的块,速度高达 3GB / s
并行加载块,结合 MySQL Server 8.0.21 中的禁用 InnoDB Redo Log 的功能,加载性能可以超过 200MB / s
在转储的同时进行加载
中断后继续加载数据(断点续传)
内置压缩(zstd 和 gzip)
加载数据后推迟二级索引的创建
直接从 OCI 对象存储中转储和加载
兼容 OCI 的 MySQL 数据库服务模式,使得向云的迁移变得容易
MySQL Shell 安装
MySQL Shell 提供了 Windows、Linux 和 Mac 的安装支持,具体请查看如下的官方安装文档:
https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html
Dump & Dump Loading Utility
MySQL Shell Dump & Dump Loading Utility 的使用以及与其它各种主流逻辑转储和加载工具 mysqldump,、mysqlpump 和 mydumper 的比较结果如下:
- 数据以大约 256 MB 的块形式转储
1 | util.dumpSchemas(["<db>"], |
- 加载
1 | util.loadDump("<directory>", |
Redo Log 禁用的情况下,MySQL Shell 能够快速转储数据,高达近 3GB/s
,并以 200MB/s
以上的速度加载数据。
参考
[1] https://dev.mysql.com/blog-archive/mysql-shell-dump-load-part-1-demo
[2] https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-dump-instance-schema.html
[3] https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-load-dump.html