MySQL Shell 经常更新,包括修复和新功能。强烈建议您始终使用最新版本。最新版本的 MySQL Shell 可以与任何 GA 版本的 MySQL 8.0 或更高版本一起使用。
MySQL Shell 提供以下功能。
MySQL Shell 处理用 JavaScript、Python 和 SQL 编写的代码。任何执行的代码都将根据当前活动的语言作为其中一种语言进行处理。还有一些特定于 MySQL Shell 的命令,以 \
为前缀,这些命令使您能够配置 MySQL Shell,而与当前选择的语言无关。有关更多信息,请参见 第 3.1 节,“MySQL Shell 命令”.
MySQL Shell 使用 Python 3,而不是 Python 2.7。对于包含系统支持的 Python 3 安装的平台,MySQL Shell 使用最新版本,最低支持版本为 Python 3.6。对于未包含 Python 3 或版本低于最低支持版本的平台,MySQL Shell 保持与 Python 2.6 和 Python 2.7 的代码兼容性,因此,如果您需要这些较旧的版本之一,则可以使用适当的 Python 版本从源代码构建 MySQL Shell。
MySQL Shell 为未包含 Python 3 或版本低于最低支持版本的平台捆绑了 Python 3.10.8。
这适用于除 Oracle Linux 7 之外的所有构建,Oracle Linux 7 捆绑了 Python 3.9.15
MySQL Shell 提供交互式代码执行模式,您可以在 MySQL Shell 提示符处键入代码,并处理每个输入的语句,并在屏幕上打印处理结果。如果使用的终端支持,则支持 Unicode 文本输入。支持彩色终端。
可以使用命令编写多行代码,使 MySQL Shell 能够缓存多行,然后将它们作为单个语句执行。有关更多信息,请参见 多行支持.
除了交互式执行代码外,MySQL Shell 还可以从不同的来源获取代码并进行处理。这种以非交互方式处理代码的方法称为 批处理执行.
由于批处理执行模式旨在用于对单一语言进行脚本处理,因此它仅限于具有最少的非格式化输出和禁用命令执行。为了避免这些限制,请使用 --interactive
命令行选项,该选项指示 MySQL Shell 就像在交互式会话中一样执行输入。在这种模式下,输入会 逐行 进行处理,就像在交互式会话中键入的每一行一样。有关更多信息,请参见 第 5.6 节,“批处理代码执行”.
MySQL Shell 包含以下用 JavaScript 和 Python 实现的 API,您可以使用这些 API 开发与 MySQL 交互的代码。
-
AdminAPI 使您能够管理 MySQL 实例,使用它们创建 InnoDB 集群、InnoDB 集群集和 InnoDB 副本集部署,并集成 MySQL 路由器。
InnoDB 集群提供了一种集成解决方案,用于使用基于 InnoDB 的 MySQL 数据库实现高可用性和可扩展性。InnoDB 集群是使用组复制的替代解决方案,无需高级 MySQL 专业知识。请参见 第 7 章,MySQL InnoDB 集群.
InnoDB 集群集通过将主 InnoDB 集群与其在备用位置的一个或多个副本链接在一起,为 第 7 章,MySQL InnoDB 集群 部署提供灾难容错能力。请参见 第 8 章,MySQL InnoDB 集群集.
InnoDB 副本集使您能够管理一组运行异步 GTID 基于复制的 MySQL 实例。请参见 第 9 章,MySQL InnoDB 副本集.
AdminAPI 还提供操作来配置 MySQL 路由器的用户,以尽可能简单地集成 InnoDB 集群、InnoDB 集群集和 InnoDB 副本集。有关 AdminAPI 的更多信息,请参见 第 6 章,MySQL AdminAPI.
X DevAPI 使开发人员能够在 MySQL Shell 连接到使用 X 协议的 MySQL 服务器时处理关系数据和文档数据。有关更多信息,请参见 将 MySQL 用作文档存储。有关 X DevAPI 的概念和用法的文档,请参见 X DevAPI 用户指南.
MySQL Shell 旨在为所有支持 X 协议的 MySQL 产品提供集成的命令行客户端。MySQL Shell 的开发功能专为使用 X 协议的会话而设计。MySQL Shell 还可以使用经典的 MySQL 协议连接到不支持 X 协议的 MySQL 服务器。使用经典的 MySQL 协议创建的会话可以使用 X DevAPI 中的一组最小功能。
您可以以报告和扩展对象的形式定义对 MySQL Shell 基本功能的扩展。报告和扩展对象可以使用 JavaScript 或 Python 创建,并且可以使用任何活动的 MySQL Shell 语言。您可以将报告和扩展对象持久保存到在 MySQL Shell 启动时自动加载的插件中。MySQL Shell 有几个内置的报告可以立即使用。有关更多信息,请参见 第 10 章,扩展 MySQL Shell.
MySQL Shell 包含以下用于处理 MySQL 的实用程序
升级检查器实用程序,用于验证 MySQL 服务器实例是否已准备好进行升级。使用
util.checkForServerUpgrade()
访问升级检查器。JSON 导入实用程序,用于将 JSON 文档导入到 MySQL 服务器集合或表中。使用
util.importJSON()
访问导入实用程序。并行表导入实用程序,该实用程序会将单个数据文件拆分,并使用多个线程将块加载到 MySQL 表中。
有关更多信息,请参见 第 11 章,MySQL Shell 实用程序.
MySQL Shell 使用 API 命令语法公开其大部分功能,使您能够轻松地集成 mysqlsh 与其他工具。例如,您可以创建 bash 脚本,使用此功能管理 InnoDB 集群。使用 mysqlsh
语法将操作直接传递到 MySQL Shell 全局对象,绕过 REPL 接口。请参见 第 5.8 节,“API 命令行集成”.[选项]
-- shell_object
object_method
[method_arguments]
MySQL Shell 可以以表格、制表符或垂直格式返回结果,也可以作为 JSON 输出返回。为了帮助将 MySQL Shell 与外部工具集成,您可以在从命令行启动 MySQL Shell 时为所有输出激活 JSON 包装。有关更多信息,请参见 第 5.7 节,“输出格式”.
MySQL Shell 可以以您选择的详细程度记录有关执行过程的信息。日志记录信息可以发送到应用程序日志文件、附加的可视化目标和控制台的任何组合。有关更多信息,请参见 第 12 章,MySQL Shell 日志记录和调试.
在 MySQL Shell 中,对 MySQL 服务器实例的连接由会话对象处理。当您首次连接到 MySQL 服务器实例时(可以在启动 MySQL Shell 或之后进行),将创建一个名为 session
的 MySQL Shell 全局对象来表示此连接。此会话被称为全局会话,因为它可以在所有 MySQL Shell 执行模式中使用。在 SQL 模式下,全局会话用于执行语句,在 JavaScript 模式和 Python 模式下,可以通过名为 session
的对象访问它。您可以使用 mysqlx
和 mysql
JavaScript 和 Python 模块中提供的函数创建更多会话对象,并且您可以将其中一个会话对象设置为 session
全局对象,以便您可以在任何模式下使用它。有关更多信息,请参见 第 4.2 节,“MySQL Shell 会话”.