MYSQL InnoDB Cluster 连接字符串参数

MYSQL InnoDB Cluster Connect String parameters

我已经设置了 MySQL InnoDB Cluster 最新版本 (8.0.27),具有三个节点和一个主节点。我有一个 VB 脚本和连接字符串。 当前连接字符串如下:

jdbc:mysql://node1,node2,node3;db=test?multi_host=true

假设我的主节点 1 出现故障,R/W 访问权限将传递到成为主节点的节点 2 或节点 3。在此期间,我的连接字符串将无法工作,因为它试图连接到第一个节点并失败。 是否有任何其他参数可以在连接字符串中传递来处理此类问题? 连接字符串如何知道哪个节点是主节点并连接到它。

谢谢。

InnoDB Cluster通常以单主模式运行,有一个主实例(读写)和多个从实例(只读)。

为了让客户端应用程序处理故障转移,它们需要了解 InnoDB 集群拓扑。他们还需要知道哪个实例是主实例。虽然应用程序可以实现该逻辑,但 MySQL 路由器 可以为您提供此功能。

shell> mysqlrouter --bootstrap root@localhost:3310

MySQL 路由器连接到 InnoDB 集群,获取其元数据并配置自身以供使用。生成的配置创建 2 个 TCP 端口:一个用于读写会话(将连接重定向到 PRIMARY),一个用于只读会话(将连接重定向到 SECONDARY 实例之一)。

引导和配置后,启动 MySQL 路由器(或设置服务使其在系统启动时自动启动):

shell> mysqlrouter &

您现在可以将 MySQL 客户端(例如 MySQL Shell 连接到传入的 MySQL 路由器端口之一,并查看客户端如何透明地连接到InnoDB 集群实例之一。

shell> mysqlsh --uri root@localhost:6442

但是,当主节点出现故障时,只能读取数据,不能写入数据。如果你想写入工作,请参阅 MySql 的高可用性和多主集群。

有关详细信息,请参阅 this