我搜索了SO并阅读了很多问题,但没有发现任何真正回答我的问题,首先是一些背景信息:
我很清楚MySQL复制和集群,但这是我在解决这些问题时遇到的问题:
1)在复制中,如果the Master fails,整个网格出现故障或长时间停机都会受到影响
2)在Cluster中,首先我认为为了添加另一个节点,还必须遇到停机时间,但再次阅读the documentation我不再那么肯定了
Q1:有人可以澄清“滚动重启”是否实际意味着连接到网格的任何应用程序的停机时间?
由于我的印象是停机时间不可避免,在我看来,3d应用程序可以解决这个问题: PHP连接到3d App,3d App插入/更新/删除到一个数据库中以快速返回last_insert_id,PHP继续其过程并且3d App继续从其他数据节点插入/更新/删除。在这种情况下,每个数据库都不会被复制或集群,它们是独立的数据库服务器,3d应用程序是一个守护程序。
Q2:有人知道这样的应用吗?
在上面的场景中,从PHP端选择将随机选择一个DB服务器(以进行负载均衡)
感谢您的时间和智慧
答案 0 :(得分:2)
滚动重启基本上跟踪一系列节点并逐个重新启动它们。它确保在重新启动之前没有用户登录到节点,然后重新启动,移动到下一个节点或服务器等等。所以是的,您的服务器将重新启动但是按顺序重启,因此如果您有一个具有n个节点的集群设置,则每个节点将逐个重新启动,因此可以删除停机时间或限制它。
我建议将PHP脚本与NoSQL数据库集成,您可以为这些数据库设置集群,并且几乎没有延迟。如果您仍然需要MySQL Synced数据库,那么您也可以尝试将NoSQL设置为master并复制到MySQL slave,这也是可能的。
答案 1 :(得分:1)
这里有很多问题。
主 - 从错误中没有隐式功能,用于在主站发生故障时提升从站。自己编写脚本是微不足道的。
对于不是问题的主 - 主复制 - OTOH,运行大量节点,失败会增加数据集的差异。
第3个应用程序描述的很多功能都是由mysqlproxy实现的 - 虽然没有什么可以阻止你在自己的数据库抽象层中构建功能(你可以通过异步消息/ http调用来处理处理)或作为关闭功能)