我正在努力扩展Web应用程序并提供一些数据库冗余以防止出现故障,并在需要更新时保持服务器正常运行。该应用程序仍在开发中,因此我选择了一个简单的多主冗余和两个独立的数据库服务器来尝试实现这一目标。每个服务器都有Django代码并托管自己的数据库,数据库应该尽可能密切镜像(在几秒钟内更新)。
我试图弄清楚如何在Django和MySQL数据库之间建立多主(主 - 主)复制。有很多关于仅使用MySQL进行设置的文档(使用各种配置),但是我无法找到任何从Django方面开始工作的文档。
据我所知,我需要通过在Django设置中添加两个数据库条目(每个主服务器一个)来处理此问题,然后编写一个数据库路由器,指定要从哪个数据库读取以及从哪个数据库写入。在这种情况下,两个数据库都应接受读取和写入,并且写入/更新应镜像到另一个数据库。路由器中的逻辑可以简单地使用循环技术来决定使用哪个数据库。从那时起,应通过MySQL配置进一步配置以设置实际复制。
这种方法听起来是否正确,是否有人有任何使用此方法的经验?
答案 0 :(得分:0)
您对路由器的想法很棒!我想补充一点,你需要自动检测数据库是否[慢]下降。您可以通过响应时间和连接/读/写错误来检测。如果发生这种情况,那么您将这个数据库从循环列表中排除一段时间,尝试连接回它,然后检测数据库是否还活着。
换句话说,循环列表会根据数据库计算机的运行状况动态增长和缩小。
另一个重要的通知是,幸运的是,您不需要维护所有Web服务器通用的循环列表。每个Web服务器都可以存储自己的循环列表副本及其自身的包含状态,并将数据库排除在此列表中。这只是因为可以从一个Web服务器看到数据库服务器,并且由于本地网络问题而无法从另一个Web服务器看到它。