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

时间:2018-05-10 13:53:02

标签: c# mysql database-connection connection-string

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

例如:Server = serverAddress1,serverAddress2,serverAddress3; Database = myDataBase; UID =名为myUsername; PWD = MYPASSWORD;

但是我需要一些关于它如何专门选择服务器的信息。例如,它是循环吗?或者它是否按顺序排列,直到找到合适的?

如果第一个失败,并且移动到第二个失败,那么在它尝试使用第二个失败之前会有多长时间?

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

TIA - 乔

2 个答案:

答案 0 :(得分:2)

MySQL documentation表示可以用逗号分隔多个主机:

  

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

不幸的是,这些信息不正确。有一个长期存在的错误(MySQL bug 81650MySQL bug 88962)报告此功能无法按照说明运行。

但是,有一个替代的OSS MySQL ADO.NET提供程序支持多个以逗号分隔的主机:MySqlConnector on GitHubNuGet。此外,它还有Load Balance connection string option,可让您指定所需的确切负载均衡类型:RoundRobinFailOverRandom,{{1} }。

答案 1 :(得分:0)

MySQL文档是你的朋友。它声明

  

连接网址中的主机列表包含两种类型的主机   主要次要。启动新连接时,   驱动程序始终首先尝试连接到主要主机,如果   必需,按顺序故障转移到列表中的辅助主机   当遇到沟通问题时。即使是最初的   与主要主机的连接失败,驱动程序已连接到   作为辅助主机,主要主机永远不会失去其特殊状态

因此,在下面的连接字符串中,第一个主机是主要主机,将首先选择连接。只有在不可用时才会选择辅助主机。它也会尝试尽快回到主要主机,但是如何配置它。

  

jdbc:mysql:// [主要主机] [:端口],[辅助主机   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