繁体   English   中英

MySQL c#连接字符串故障转移

[英]MySQL c# Connection String failover

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

例如:Server=serverAddress1, serverAddress2, serverAddress3;Database=myDataBase; uid=myUsername;Pwd=myPassword;

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

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

我对故障转移连接字符串的其他建议持开放态度

TIA - 乔

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

MySQL 文档是您的朋友。 它指出

连接 URL 中的主机列表包含两种类型的主机,主要次要主机 开始新连接时,驱动程序总是首先尝试连接到主要主机,如果需要,当遇到通信问题时,依次故障转移到列表中的辅助主机。 即使与主要主机的初始连接失败并且驱动程序连接到辅助主机,主要主机也不会失去其特殊状态

所以在下面的连接字符串中,第一台主机是主要的,将首先被选中进行连接。 只有当这不可用时,才会选择辅助主机。 它还将尝试尽快故障回复到主要主机,但可以配置其工作方式。

jdbc:mysql://[primary host][:port],[secondary host 1][:port][,[secondary host 2][:port]]...[/[database]]» [?propertyName1= propertyValue1[&propertyName2=propertyValue2]...]

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-config-failover.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM