X DevAPI 用户指南  / 第 2 章连接和会话概念  / 2.2 连接到会话  /  2.2.2 连接到多台主机之一和连接故障转移

2.2.2 连接到多台主机之一和连接故障转移

创建会话时,您可以提供多个 MySQL 路由器或服务器端点(作为主机和可选端口或 Unix 套接字)。您指定一个类似 URI 的字符串,其中包含多个主机、端口和可选的优先级。这使连接器能够在任何端点不可用时执行自动连接故障转移选择。当有多个端点可用时,选择哪个服务器用于会话取决于您是否指定优先级。如果为每个端点指定了优先级,则使用具有最高优先级的可用端点。如果您未指定优先级,则会使用随机可用端点。本节介绍如何在类似 URI 的字符串中配置多个端点。 使用类似 URI 的连接字符串进行连接

笔记

您在类似 URI 的字符串中提供的用户和密码适用于所有可能的端点,因此每个端点上必须存在相同的 MySQL 帐户。

要指定没有优先级的多个主机,URI-like 连接字符串的格式为:

user:password@[(address=[host]:[port]), (address=[host]:[port]) ..]

端点集合被列为主机、端口或主机和端口。在没有优先级的情况下设置多个端点时,将为连接选择任何可用的端点。

要指定端点的优先级,类似 URI 的连接字符串的格式为:

user:password@[(address=[host]:[port], priority=value), (address=[host]:[port], priority=value) ..]

这会设置具有显式优先级的端点,例如,在另一个端点不可用时将连接故障转移到特定端点。指定的优先级范围可以从0(最低优先级)到 100(最高优先级)。当两个端点共享相同的优先级时,将随机选择其中一个。

例如,假设您使用类似 URI 的字符串进行连接,例如:

mysqlx://user:password@[(address=example1.com:33060,priority=99),(address=example2.com:33060,priority=100)]

在这种情况下,有两个可能的端点,并且 example2:33060具有更高的优先级。当两个端点都可用时,连接器连接到 example2.com:33060。如果 example2.com:33060不可用,连接器将连接到example1:33060