设置:多个MySQL数据库在不同的位置使用相同的scheme。 数据库正在生产中。
动机:我们想要在Web界面中显示这些数据库中的信息,清楚地显示该行起源于哪个数据库。 我们希望能够从单一来源获得这些数据(出于不同的原因,其中之一是分页,如果您使用多个来源,会变得棘手)。
问题是:我们如何从多个数据库中收集数据,将数据存储在一个中心位置,并清楚地标出每一行的来源? 我们已经讨论过使用一个集中的DB来跟踪生产数据库的变化,使用相同的模式和一个额外的来源列。 如果可能,我们希望避免在生产环境中进行更改。
由于我们不能使用MySQL的复制(不允许多个主站到单个从站),我们的其他select是什么? 有没有现成的解决scheme,或者我们自己编码? 是在生产中更改数据库模式并为源添加一列的最佳解决scheme?
中央数据库的想法并不是一成不变的。 如果有解决scheme来解决我们的其他问题,而没有集中的数据库,我们可以灵活。
任何帮助深表感谢。
你将不得不在代码中写一些代码。 我的意见是,最好是依靠MySQL本身能做的事情,而不是为了适应而扭曲现有的应用程序。
我预见的一个select是使用MySQL懒惰复制将每个位置复制回集中式机器上的单独的从属进程。 现在,你当然不会高兴地将数据JOIN本地。 但是它可以让你解决应用程序逻辑中的分页问题,通过使得数据在地理上足够接近,并且所有数据的来源都明确地由它所处的从属进程定义。
您的分页选项可能由数据集的大小决定。 如果不是很大,那么你可以简单地在应用程序/会话内存中执行它。 否则,您可以使用一个小型的集中式数据库实例将结果临时转储到。
阅读其他build议会很有趣。
使所有的mysql从站日志(非二进制)到文件。 ..和pipe道文件到irc聊天室#feed在服务器上,运行您的ircd ..并听#feed聊天室..并pipe道命令到| mysql -D主
如果您有第二个只读的“主”,第一个复制到第二个“主”,那么您的查询将不会locking/阻止提要。
(至less我在早期版本中看到了这一点)
Ĵ