C# 用于将3个主节点连接到MySQL的ConnectionString 背景

C# 用于将3个主节点连接到MySQL的ConnectionString 背景,c#,mysql,.net,connection-string,mysql-connector,C#,Mysql,.net,Connection String,Mysql Connector,我正在开发一个.net项目,它与EF6和MySQL DB一起工作。为了实现高可用性,我使用Galera集群,所以我有3个MySQL主节点:master1、master2和master3 根据需要,我应该能够使用以下连接字符串: Server=master1, master2, master3;Database=myDataBase; Uid=myUsername;Pwd=myPassword; 我试过上面的方法,但不起作用。。。我已经了解了多主机连接字符串不起作用的原因 问题: 据我所知,我

我正在开发一个.net项目,它与EF6和MySQL DB一起工作。为了实现高可用性,我使用Galera集群,所以我有3个MySQL主节点:master1、master2和master3

根据需要,我应该能够使用以下连接字符串:

Server=master1, master2, master3;Database=myDataBase;
Uid=myUsername;Pwd=myPassword;
我试过上面的方法,但不起作用。。。我已经了解了多主机连接字符串不起作用的原因


问题: 据我所知,我可以在我的JDBC连接字符串前面使用
mysql:loadbalance:
。问题是我不知道我在使用哪个MySQL连接器?我相信我已经安装了.net的标准/默认Nuget软件包(和)。你知道上面的软件包附带了哪个MySQL连接器吗


知道如何使用MySQL连接器来平衡/连接3个主节点吗

MySQL.Data不支持这一点。正如您所观察到的,有多个bug报告(,)指出了这个问题,但它已经三年没有被修复了

另外,还有一个MySQL库,它支持这种连接字符串语法。不幸的是,没有EF6库可供使用。(有一个EF.Core包,)


解决方法是在三个Galera节点前面创建第4层负载平衡器。Galera提供了有关的文档。您的C#MySQL客户端将连接到HAProxy,并在Galera服务器之间实现负载平衡连接。

此错误已在中修复


请参阅此处的发行说明:

非常感谢,是的,我昨天看到了你的另一篇文章,这就是我了解该漏洞的原因。。。看起来,我的案例的唯一解决方案是使用负载平衡器(如HAProxy)。。。但这是否意味着我需要为负载平衡器添加额外的服务器?我想避免这种情况,因为在AWS上为负载平衡器运行额外服务器的成本…我已经看到了,但它似乎适用于主/从场景。您知道我是否可以将此解决方案与多个主机一起使用吗?i、 e.为所有3台服务器提供
IsMaster=“true”
?您可以使用AWS弹性负载平衡来平衡多台MySQL服务器之间的TCP流量(端口3306)。我从未尝试过,但如果它与HAProxy类似,它应该可以工作。我不熟悉MySQL的
配置。如果这在最新的MySql.Data中仍然有效,那么首先值得研究一下。