首页 > 解决方案 > MySQL c# 连接字符串故障转移

问题描述

我知道我可以用逗号分隔连接字符串中的主机,它将使用不同的服务器:https ://www.connectionstrings.com/mysql-connector-net-mysqlconnection/multiple-servers/

例如:Server=serverAddress1, serverAddress2, serverAddress3;Database=myDataBase; Uid=我的用户名;密码=我的密码;

但我需要一些关于它如何具体选择服务器的信息。例如,是循环赛吗?或者它是否按顺序进行,直到找到一个工作?

如果第一个失败,它移动到第二个,它在尝试使用第二个之前需要多长时间?

我愿意接受有关故障转移连接字符串的其他建议

TIA-乔

标签: c#mysqldatabase-connectionconnection-string

解决方案


MySQL 文档说多个主机可以用逗号分隔:

可以指定多个主机,用逗号分隔。这在为复制配置了多个 MySQL 服务器并且您不关心要连接的精确服务器的情况下非常有用。

不幸的是,此行为在 Connector/NET 8.0.18 及更早版本中被破坏(已在 8.0.19 中修复)。

除非您为每个主机指定属性,否则Connector/NET 8.0.19 将随机尝试多个主机。priority例如:

// hosts will be tried at random
host=10.10.10.10:3306,192.101.10.2:3305,localhost:3306;uid=test;password=xxxx;

// hosts will be tried in descending priority order
server=(address=192.10.1.52:3305,priority=60),(address=localhost:3306,priority=100);

如果您无法更新到 8.0.19,还有一个替代的 OSS MySQL ADO.NET 提供程序,它确实支持多个逗号分隔的主机:GitHub 上的 MySqlConnectorNuGet。此外,它还有一个Load Balance 连接字符串选项,可让您指定所需的确切负载平衡类型:RoundRobinFailOverRandomLeastConnections


推荐阅读