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

7dl7o3gd  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(450)

我知道我可以用逗号分隔连接字符串中的主机,它将使用不同的服务器:https://www.connectionstrings.com/mysql-connector-net-mysqlconnection/multiple-servers/
例如:server=serveraddress1、serveraddress2、serveraddress3;database=mydatabase;uid=我的用户名;pwd=我的密码;
但我需要一些关于它如何选择服务器的信息。例如,是循环制吗?还是按顺序进行,直到找到一个有效的?
如果第一个失败了,它会移动到第二个,那么要多久它才会尝试使用第二个呢?
我对故障转移连接字符串的其他建议持开放态度
蒂亚-乔

jc3wubiy

jc3wubiy1#

mysql文档是您的朋友。它说
连接url中的主机列表包含两种类型的主机:主主机和辅助主机。启动新连接时,驱动程序总是首先尝试连接到主主机,如果需要,在遇到通信问题时,会按顺序故障切换到列表中的辅助主机。即使到主主机的初始连接失败并且驱动程序连接到辅助主机,主主机也不会丢失其特殊状态
因此,在下面的连接字符串中,第一个主机是主主机,将首先被选中进行连接。仅当此选项不可用时,才会选择辅助主机。它还将尝试尽快故障回复到主主机,但如何工作可以配置。
jdbc:mysql://[主主机][:端口],辅助主机1][:端口][,[辅助主机2][:端口]]…[/[数据库]]» [?propertyname1=propertyvalue1[&propertyname2=propertyvalue2]…]
https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-config-failover.html

5cnsuln7

5cnsuln72#

mysql文档中说,多个主机可以用逗号分隔:
可以用逗号分隔多个主机。当多个mysql服务器被配置为进行复制,而您不关心所连接的服务器时,这一点非常有用。
不幸的是,在connector/Net8.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 .

相关问题