[英]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 上的 MySqlConnector , NuGet 。 此外,它還具有Load Balance
連接字符串選項,可讓您指定所需的確切負載平衡類型: RoundRobin
、 FailOver
、 Random
、 LeastConnections
。
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.