MySQL 外壳 8.0  /  第 1 章 MySQL Shell 特性

第 1 章 MySQL Shell 特性

重要的

MySQL Shell 经常更新修复和新功能。强烈建议您始终使用可用的最新版本。最新版本的 MySQL Shell 可以与任何 GA 版本的 MySQL 5.7 或 8.0 一起使用。

MySQL Shell 中提供了以下功能。

支持的语言

MySQL Shell 处理用 JavaScript、Python 和 SQL 编写的代码。根据当前活动的语言,任何已执行的代码都将作为这些语言之一进行处理。还有特定的 MySQL Shell 命令,前缀为\,使您能够配置 MySQL Shell 而不管当前选择的语言。有关详细信息,请参阅 第 3.1 节,“MySQL Shell 命令”

从版本 8.0.18 开始,MySQL Shell 使用 Python 3,而不是 Python 2.7。对于包含系统支持安装的 Python 3 的平台,MySQL Shell 使用可用的最新版本,最低支持版本为 Python 3.6。对于不包含 Python 3 或未达到最低支持版本的平台,MySQL Shell 将 Python 3.7.7 捆绑到 MySQL Shell 8.0.25,并将 Python 3.9.5 从 MySQL Shell 8.0.26 捆绑在一起。MySQL Shell 保持与 Python 2.6 和 Python 2.7 的代码兼容性,因此如果您需要这些旧版本之一,您可以使用适当的 Python 版本从源代码构建 MySQL Shell。

交互式代码执行

MySQL Shell 提供了一种交互式代码执行模式,您可以在 MySQL Shell 提示符下键入代码,然后处理每个输入的语句,并将处理结果打印在屏幕上。如果使用的终端支持,则支持 Unicode 文本输入。支持彩色终端。

可以使用命令编写多行代码,使 MySQL Shell 能够缓存多行代码,然后将它们作为单个语句执行。有关详细信息,请参阅 多行支持

批处理代码执行

除了代码的交互式执行之外,MySQL Shell 还可以从不同的来源获取代码并对其进行处理。这种以非交互方式处理代码的方法称为 批处理

由于批处理模式旨在用于单一语言的脚本处理,因此它仅限于具有最少的非格式化输出并禁用命令的执行。为避免这些限制,请使用--interactive 命令行选项,它告诉 MySQL Shell 执行输入,就好像它是交互式会话一样。在这种模式下,输入是逐行处理的,就好像每一行都是在交互式会话中键入的一样。有关详细信息,请参阅 第 5.6 节,“批处理代码执行”

支持的 API

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

  1. AdminAPI 使您能够管理 MySQL 实例,使用它们创建 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet 部署,并集成 MySQL Router。

    AdminAPI 还提供了为 MySQL Router 配置用户的操作,使与 InnoDB Cluster、InnoDB ClusterSet 和 InnoDB ReplicaSet 的集成尽可能简单。有关 AdminAPI 的更多信息,请参阅 第 6 章,MySQL AdminAPI

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

X 协议支持

MySQL Shell 旨在为所有支持 X 协议的 MySQL 产品提供一个集成的命令行客户端。MySQL Shell 的开发特性专为使用 X 协议的会话而设计。MySQL Shell 还可以使用经典的 MySQL 协议连接到不支持 X 协议的 MySQL 服务器。X DevAPI 的一组最小功能可用于使用经典 MySQL 协议创建的会话。

扩展

您可以以报告和扩展对象的形式定义 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 集群。使用语法将操作直接传递给 MySQL Shell 全局对象,绕过 REPL 接口。请参阅 第 5.8 节,“API 命令行集成”mysqlsh [options] -- shell_object object_method [method_arguments]

输出格式

MySQL Shell 可以以表格、选项卡式或垂直格式或 JSON 输出形式返回结果。为了帮助将 MySQL Shell 与外部工具集成,您可以在从命令行启动 MySQL Shell 时为所有输出激活 JSON 包装。有关详细信息,请参阅第 5.7 节,“输出格式”

记录和调试

MySQL Shell 可以在您选择的详细级别记录有关执行过程的信息。可以将日志记录信息发送到应用程序日志文件、其他可查看目标和控制台的任意组合。有关详细信息,请参阅 第 12 章,MySQL Shell 日志记录和调试

全球会议

在 MySQL Shell 中,与 MySQL Server 实例的连接由会话对象处理。当您与 MySQL 服务器实例建立第一个连接时(可以在启动 MySQL Shell 时或之后完成),将 session创建一个名为 MySQL Shell 的全局对象来表示此连接。此会话称为全局会话,因为它可用于所有 MySQL Shell 执行模式。在 SQL 模式下,全局会话用于执行语句,在 JavaScript 模式和 Python 模式下,它可通过名为session. mysqlx 您可以使用 JavaScript和Python 模块中可用的函数创建更多会话对象mysql,并且可以将这些会话对象之一设置为 session全局对象,因此您可以在任何模式下使用它。有关详细信息,请参阅 第 4.2 节,“MySQL Shell 会话”