我目前正在从事一个项目,该项目涉及将大型 MySQL 数据库拆分为多个较小的分片。但是,客户端必须能够像以前一样查询数据库,而无需更改用户界面;也就是说,他们通过 MySQL 客户端(Workbench、DBForge 等)发送的任何查询都必须从主数据库返回与从其分片返回相同的结果集。
这要求应用程序位于客户端和服务器之间,以拦截查询、分析它们、修改它们,并根据需要将它们重定向到主数据库或分片。我知道 MySQL Proxy 特别适合这项任务,但这就是问题所在。
我已经编写了一个 C# 应用程序,它接受一个 MySQL 查询字符串,修改它,查询它必须的任何分片,并聚合来自所有分片的结果。我的问题是我不知道如何将 MySQL Proxy 连接到这个应用程序。理想情况下,MySQL 代理会拦截查询,确定它是否“可分片”,然后将其发送到我的分片应用程序或主数据库。然后,分片应用程序会将其结果集发送回 MySQL 代理,后者会将其返回给客户端。
有什么明确的方法可以做到这一点吗?也许如果我要将 C# 应用程序变成 WCF 服务?MySQL Proxy 有连接数据库的方法,但考虑到它是用 Lua 编写的,我不知道它是否可以连接到一个简单的 Web 服务,更不用说 WCF。是否有一些替代 MySQL Proxy 的方法可以更好地满足我的需求?