2015-12-26 29 views
0

我正在扩展web应用程序并提供一些数据库冗余以防止故障,并在需要更新时保持服务器正常运行。该应用程序仍处于开发阶段,因此我选择了一个简单的多主站冗余以及两个独立的数据库服务器来尝试实现此目标。每个服务器将拥有Django代码并托管它自己的数据库,并且数据库应尽可能接近镜像(在几秒钟内更新)。使用Django webapp和MySQL进行多主数据库复制

我想弄清楚如何设置与Django和MySQL数据库之间的多主(主 - 主)复制。有很多关于仅使用MySQL进行设置的文档(使用各种配置),但是我从Django方面找不到任何工作。

据我所知,我需要通过在Django设置中添加两个数据库条目(每个主数据库条目),然后编写一个数据库路由器来指定要从哪个数据库读取数据以及从哪个数据库写入数据。在这种情况下,两个数据库都应该接受读取和写入,并且应该将写入/更新镜像到另一个数据库。路由器中的逻辑可以简单地使用循环技术来决定使用哪个数据库。从那里开始,进一步的配置来设置实际的复制应该通过MySQL配置完成。

这种方法听起来是否正确,有没有人有任何经验来实现这个工作?

回答

0

你对路由器的想法很棒!我会补充说,你需要自动检测数据库是否[缓慢]下来。您可以通过响应时间和连接/读取/写入错误来检测。如果发生这种情况,那么您将该数据库从循环列表中排除一段时间,尝试立即连接回数据库以检测数据库是否还活着。

换句话说,根据数据库机器的运行状况,循环列表会动态增长和收缩。

另一个重要的通知是,幸运的是,您不需要维护所有Web服务器通用的循环列表。每个Web服务器都可以将自己的循环列表副本以及自己的包含和排除数据库的状态存储到此列表中。这只是因为数据库服务器可以从一个Web服务器上看到,并且由于本地网络问题而无法从另一个Web服务器上看到。