MySQL Shell 9.0  /  MySQL Shell 功能

第 1 章 MySQL Shell 功能

重要

MySQL Shell 经常更新以修复 bug 和添加新功能。 强烈建议您始终使用最新版本。 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。

对于 Python 3 不包含或未达到最低支持版本的平台,MySQL Shell 捆绑了 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 节, “批处理代码执行”.

支持的 API

MySQL Shell 包括以下在 JavaScript 和 Python 中实现的 API,您可以使用它们来开发与 MySQL 交互的代码。

  1. AdminAPI 使您能够使用它们来创建 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet 部署,并将 MySQL 路由器集成在一起,从而管理 MySQL 实例。

    AdminAPI 还提供用于配置 MySQL 路由器用户的操作,以使与 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet 的集成尽可能简单。 有关 AdminAPI 的更多信息,请参阅 第 6 章, MySQL AdminAPI.

  2. X DevAPI 使开发人员能够在 MySQL Shell 连接到使用 X 协议的 MySQL 服务器时使用关系数据和文档数据。 有关更多信息,请参阅 使用 MySQL 作为文档存储。 有关 X DevAPI 的概念和用法的文档,请参阅 X DevAPI 用户指南.

X 协议支持

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 实用工具.

API 命令行集成

MySQL Shell 使用 API 命令语法公开了其大部分功能,使您能够轻松地将 mysqlsh 与其他工具集成。 例如,您可以创建 bash 脚本,使用此功能来管理 InnoDB 集群。 使用 mysqlsh [选项] -- shell_object object_method [method_arguments] 语法直接将操作传递给 MySQL Shell 全局对象,绕过 REPL 接口。 请参阅 第 5.8 节, “API 命令行集成”.

输出格式

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 的对象使用。 您可以使用 mysqlxmysql JavaScript 和 Python 模块中可用的函数创建更多会话对象,并且可以将这些会话对象之一设置为 session 全局对象,以便您可以在任何模式下使用它。 有关更多信息,请参阅 第 4.2 节, “MySQL Shell 会话”.