MYSQL InnoDB Cluster 连接字符串参数

标签 mysql database vb.net load-balancing high-availability

我已经设置了 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 Router 可以为您提供此功能。

shell> mysqlrouter --bootstrap root@localhost:3310

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

引导和配置后,启动 MySQL Router(或为其设置服务以在系统启动时自动启动):

shell> mysqlrouter &

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

shell> mysqlsh --uri root@localhost:6442

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

参见 this了解更多详情。

关于MYSQL InnoDB Cluster 连接字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69786474/

相关文章:

database - 在Rust中使用oracle crate

vb.net - 在 VB.Net 中使用泛型进行 My.Settings 持久性的最佳方式?

javascript - 从 Breeze 的 EF 上下文中省略元数据

mysql - 合并两个表而不使用 mysql 中的连接?

mysql - 医患预约数据库结构

php - fatal error : Call to undefined function working then failing again?

mysql - 在导入 MySQL 时将校验位从数字拆分为单独的列

wpf - 如何使用ICommand实现DockPanel或图像单击?

mysql - RethinkDb 等效于日期之间的过滤器

MySQL,使用字段值作为别名