MySQL Shell 使您能够使用各种 API,并支持指定连接,如 使用类似 URI 的字符串或键值对连接到服务器中所述。您可以使用类似 URI 的字符串或键值对来指定连接。AdminAPI 不支持附加连接参数。本文档演示了使用类似 URI 的连接字符串的 AdminAPI。
对于 AdminAPI 操作,您只能使用 TCP/IP 连接和经典 MySQL 协议连接到 InnoDB 集群中的服务器实例。AdminAPI 操作不支持使用 Unix 套接字和命名管道,AdminAPI 操作不支持使用 X 协议。相同的限制适用于服务器实例本身之间的连接。
客户端应用程序可以使用 X 协议和 Unix 套接字和命名管道连接到 InnoDB 集群中的实例。这些限制仅适用于使用 AdminAPI 命令的管理操作,以及实例之间的连接。
例如,要以用户身份连接
到端口上
myuser
的 MySQL 服务器实例,请使用连接字符串:
www.example.com
3306
myuser@www.example.com: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 的自动协议检测会在创建经典 MySQL 协议会话之前短暂地为 X 协议创建一个会话。
除非您使用 MySQL 路由器管理的端口连接到仅具有两个辅助(只读)实例的 InnoDB 集群,否则该行为无效。在这种情况下,两个实例之间的负载平衡没有得到正确管理,并且始终使用同一个实例。为避免这种副作用,您可以通过添加--mc
或--mysql
选项显式指定经典 MySQL 协议会话。
当一个或多个服务器确实无法访问时,某些打开许多服务器连接的操作可能需要很长时间才能执行,例如cluster.status()
命令。连接超时可能无法为响应提供足够的时间。
从 MySQL Shell 8.0.28 开始,您可以使用 MySQL Shell 配置选项dba.connectTimeout
为使用 AdminAPI 的任何会话设置默认连接超时(以秒为单位)。