类似于...
http://serverfault.com/questions/35899/mysql-5-1-replication-topologies-multi-master
我想知道的是,是否真的有好的那里有 MySQL 的代理?我的平台的一部分是“共享托管”环境,客户通常配置(作为示例)他们的应用程序以与“mysql4-7.db.domain.tld”通信。
不幸的是,这使得升级成为一种“全有或全无”的方法,并且测试也很棘手。
我想要做的是向每个人指出一组高度可用的代理,让它们处理身份验证并将查询传递给适当的数据库服务器。
我希望看到的功能;
- 可从数据库配置
- 某种共享状态,以便我们可以实现无缝故障转移
- 不会完全影响绩效
- 是否可以通过额外的日志记录/指标来识别重度用户/数据库,因为代理将看到所有正在进行的查询?
- 能够监听多个 IP 地址和端口
最终目标是能够让用户单身的一次只更新一个数据库,这样我们就可以分阶段处理升级,而且大多数情况下客户都不会注意或关心。请记住,我们不为这些人编写应用程序,也不提供“深入”的技术支持(应用程序配置级别),一些我们的用户对此一无所知。因此我提出了这种思路 ;)
我考虑过为每个数据库创建类似于以下内容的 DNS 记录:
databasename.db.domain.tld
然后将它们指向正确的数据库服务器,我们确实有一个约束,即数据库名称(跨所有数据库平台)必须是唯一的......有没有更好的解决方案?
很高兴回答您的问题。感谢您的时间!
答案1
使用 DNS 解决方案的一种廉价而愉快的方法是将特定于帐户的内容纳入数据库名称中。客户不会期望一个帐户上有重复的数据库名称,而且这很容易生成,因为您必须通过配置系统提供按客户列出的列表。
如果您选择这种方式,我建议您使用一些永远不会从帐户中更改的内容,例如帐号(而不是管理界面登录名)。否则,如果您出于任何原因必须更改名称,则必须更新所有位置的 DNS,或者使用某种系统在合理的时间内保留旧名称。