我有一个数据库,出于备份原因,我打算复制它(目前性能不是问题)。
我们已经正确设置了复制并对其进行了测试,一切都很好。
然后我们意识到它会将所有写入复制到临时表中,这实际上意味着对于空闲的从站而言,一天的数据复制需要将近两个小时。
原因是我们每 15 分钟通过 cronjob 重新计算数据库中的一些数据以确保它同步(总共需要大约 3 分钟,因此在 Web 请求期间执行这些操作是不可接受的;相反,我们只是在 Web 请求中存储修改而不尝试重新计算任何内容,然后批量完成所有工作)。为了有效地处理这些数据,我们使用临时表(因为有很多相互依赖关系)。
现在,第一个问题是,如果我们在从属服务器正在处理使用该临时表的事务时重新启动它,那么临时表不会持久存在。这可以通过不使用临时表来避免,尽管这有其自身的问题。
更严重的问题是,如果不是所有重新计算(它一个接一个地进行,所以每 15 分钟重建一次数据没有任何好处),奴隶可以在不到半小时的时间内轻松赶上......你可以从字面上看到它停留在 1115,只是为了快速赶上并停留在 1130 等)。
我们提出的一种解决方案是将所有重新计算从复制的数据库中移出,这样从站就不会复制它。但它的缺点是我们必须修剪它最终更新的表,使我们的奴隶实际上被“阉割”,即。在我们真正使用它之前,我们必须重新计算它上面的所有内容。
有没有人遇到过类似的问题和/或您将如何解决?我错过了一些明显的东西吗?