簡體   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