MySQL代理

在类似的路线…

http://serverfault.com/questions/35899/mysql-5-1-replication-topologies-multi-master 

我想知道的是,MySQL是否有非常好的代理? 我的平台的一部分是“共享主机”环境,客户通常configuration(作为例子)他们的应用程序目前与“mysql4-7.db.domain.tld”对话。

不幸的是,这使得升级成为一个“全部或全部”的方法,testing是棘手的。

我想要做的是将每个人都指向一组高度可用的代理,让这些代理处理身份validation并将查询传递给相应的数据库服务器。

我很想看的function;

  • 从数据库configuration
  • 某种共享状态,所以我们可以做无缝的故障转移
  • 而不是总体performance的拖累
  • 额外的logging/指标,以确定大量的用户/数据库,应该是可能的,因为代理将看到所有的查询经历?
  • 监听多个IP地址和端口的能力

最终目标是能够将用户同时移动到单个数据库中,因此我们可以分阶段处理升级,而且大多数情况下不需要客户注意或关心。 请记住,我们不为这些人编写应用程序,也不提供“深度”的技术支持(到应用程序configuration的级别),而且我们的一些用户很笨。 因此,这一思路;)

我曾考虑过为每个数据库创buildDNSlogging,类似于:

 databasename.db.domain.tld 

然后指出那些在正确的数据库服务器,我们确实有一个约束,数据库名称(跨所有数据库平台)必须是唯一的…有没有更好的解决scheme?

很高兴回答问题。 谢谢你的时间!

mysqlproxy不幸的是性能成本 。 但是你可以在其中编写相当先进的东西 。 也许你只是在洗牌dbs时暂时使用它。

我只用它在testing环境,我没有运行在生产。

使用DNS解决scheme的一种便宜和令人愉快的方式是将特定于帐户的某些内容包含在db名称中。 客户不会对一个帐户有任何重复的数据库名称的期望,这很容易产生,因为您必须通过您的供应系统获得可供客户使用的清单。

如果你走这条路线,我会build议使用一些永远不会改变的账号,比如账号(而不是pipe理界面login名)。 否则,如果您因任何原因必须更改名称,则必须到处更新DNS,或者有一些系统可以在合理的时间内对旧名称进行祖父。