我们要build立一个复杂的mysql复制基础架构。 这个想法是有三个客户端,它们处理来自用户的请求,并在mysql中的主从复制中被configuration为从服务器。 还有两台服务器,configuration为主 – 主复制。 现在我们要通过负载平衡器(或代理)将这些主 – 主复制作为3个从站的单个主站使用。 有没有人设置了类似的configuration? 是否有可能,这两个主服务器有不同的二进制日志,这可以打破复制? 系统是与MySQL 5.1.48的Debian Lenny
我不知道有一个解决scheme来完成你的任务,因为MySQL本身不支持从多个主服务器复制的从服务器。
循环复制是脆弱的,通常不推荐。
如果主要主站发生故障,这是所有从站的主站,您可能会将其重新指向辅助主站。 这通常涉及通过双向日志进行挖掘,这可能非常繁琐,并且很容易犯错。 你可以使用Maatkit的mk-slave-move实用程序来简化它。
您可以在每个从属设备上运行多个MySQL实例,然后设置心跳或故障切换逻辑,在主设备主服务器出现故障的情况下可以切换。 这必须有坚实的逻辑来防止脆弱。
你可以运行双主,奴隶closures每个主人,然后负载平衡两个奴隶。 在负载平衡中进行可用性validation,以便在发生单个主站故障时移除从站,这可能比每个服务器上有多个从站更好。 这不会很好地扩展。
据称这套脚本有助于这种types的configuration,但我没有与他们的经验。
如果您希望只读查询具有高可用性,那么我build议让这些更重要的查询针对双主高可用性服务器运行。 对于不需要实时的查询,让它们针对多个负载平衡从站运行是有意义的,在主站发生故障的情况下可能不会有当前数据。
把它们全部设置成主人,然后复制成一个圈子,不是更简单吗?
C。
完成2台服务器的主站设置后,硬件部分就完成了。 无论写入的两台机器是哪一台,如果设置正确,任何一台服务器上的二进制日志都是足够的/完整的。 之后,把两个主人中的任何一个的奴隶build立起来。
除此之外,您始终可以将旧的主从设置为双主设备,然后从设备将在复制层次结构的下两层。 它的适用性取决于最终应用程序的容许复制滞后性,但我是两层复制的粉丝(为了使维护更容易)。