MySQL Shell 使您能够使用各种 API,并支持如 使用 URI 类字符串或键值对连接到服务器 中所述的指定连接。您可以使用 URI 类字符串或键值对指定连接。在 AdminAPI 中不支持 其他连接参数。本文档使用 URI 类连接字符串演示 AdminAPI。
对于 AdminAPI 操作,您只能使用 TCP/IP 连接和经典 MySQL 协议连接到 InnoDB 集群中的服务器实例。不支持将 Unix 套接字和命名管道用于 AdminAPI 操作,也不支持将 X 协议用于 AdminAPI 操作。这些限制也适用于服务器实例之间的连接。
客户端应用程序可以使用 X 协议以及 Unix 套接字和命名管道连接到 InnoDB 集群中的实例。这些限制仅适用于使用 AdminAPI 命令进行的管理操作以及实例之间的连接。
例如,要以用户 myuser
的身份连接到位于 www.example.com
上端口 3306
的 MySQL 服务器实例,请使用以下连接字符串
[email protected]:3306
要将此连接字符串与 AdminAPI 操作(如 dba.configureInstance()
)一起使用,您需要确保该连接字符串被解释为字符串。例如,通过用单引号(')或双引号(")将连接字符串括起来。
如果您使用的是 AdminAPI 的 JavaScript 实现,请发出
mysql-js> > dba.configureInstance('myuser@www.example.com:3306')
如果您使用的是 AdminAPI 的 Python 实现,请发出
mysql-py> dba.configure_instance('myuser@www.example.com:3306')
如果您在默认交互模式下运行 MySQL Shell,系统会提示您输入密码。AdminAPI 支持 MySQL Shell 的 第 4.4 节,“可插拔密码存储”,并且在您存储用于连接到实例的密码后,系统将不再提示您输入密码。
MySQL Shell 默认尝试使用 X 协议连接到服务器实例。如果您在为 AdminAPI 操作建立连接时未指定连接类型,MySQL Shell 的自动协议检测将首先短暂创建 X 协议会话,然后再创建经典 MySQL 协议会话。
除非您连接到仅使用 MySQL 路由器管理的端口的两个辅助(只读)实例的 InnoDB 集群,否则此行为不会产生任何影响。在这种情况下,负载均衡将无法在两个实例之间正确管理,并且始终使用同一个实例。为了避免此副作用,您可以通过添加 --mc
或 --mysql
选项显式地指定经典 MySQL 协议会话。
当一个或多个服务器确实无法访问时,执行打开到服务器的许多连接的某些操作可能需要很长时间,例如,cluster.status()
命令。连接超时可能无法提供足够的响应时间。
您可以使用 MySQL Shell 配置选项 dba.connectTimeout
设置使用 AdminAPI 的任何会话的默认连接超时时间(以秒为单位)。