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 节, “批处理代码执行”.
MySQL Shell 包括以下在 JavaScript 和 Python 中实现的 API,您可以使用它们来开发与 MySQL 交互的代码。
-
AdminAPI 使您能够使用它们来创建 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet 部署,并将 MySQL 路由器集成在一起,从而管理 MySQL 实例。
InnoDB 集群提供了一个集成的解决方案,用于使用基于 InnoDB 的 MySQL 数据库实现高可用性和可扩展性。 InnoDB 集群是使用组复制的替代解决方案,不需要高级 MySQL 专业知识。 请参阅 第 7 章, MySQL InnoDB 集群.
InnoDB ClusterSet 通过将主 InnoDB 集群与一个或多个备用位置中的自身副本链接在一起,为 第 7 章, MySQL InnoDB 集群 部署提供灾难容错。 请参阅 第 8 章, MySQL InnoDB ClusterSet.
InnoDB ReplicaSet 使您能够管理运行异步 GTID 基于复制的 MySQL 实例集。 请参阅 第 9 章, MySQL InnoDB ReplicaSet.
AdminAPI 还提供用于配置 MySQL 路由器用户的操作,以使与 InnoDB 集群、InnoDB ClusterSet 和 InnoDB ReplicaSet 的集成尽可能简单。 有关 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 会话”.