c# - MySQL c# 连接字符串故障转移
问题描述
我知道我可以用逗号分隔连接字符串中的主机,它将使用不同的服务器:https ://www.connectionstrings.com/mysql-connector-net-mysqlconnection/multiple-servers/
例如:Server=serverAddress1, serverAddress2, serverAddress3;Database=myDataBase; Uid=我的用户名;密码=我的密码;
但我需要一些关于它如何具体选择服务器的信息。例如,是循环赛吗?或者它是否按顺序进行,直到找到一个工作?
如果第一个失败,它移动到第二个,它在尝试使用第二个之前需要多长时间?
我愿意接受有关故障转移连接字符串的其他建议
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 - 使用特定凭据的 MYSQL FILTER 查询
- .net - MSTest DataRowAttribute 字符串参数乱序
- javascript - 如何从ajax获取值到spring rest api控制器
- python - 通过 glob 打开一定数量的文件
- python - 使用 loc 的 Python 数据框意外显示错误
- vscode-remote - 创建 .devcontainer 存储库
- air - 气体传感器灵敏度特性
- algorithm - 如何在 dna 序列排序算法中从右上到左下填充矩阵
- javascript - 从字符串数组中查找最长的公共前缀
- python - 如何像使用 pwntools 获取 ELF 一样在 Python 中获取 PE 的核心文件?