我有一个测试服务器,它使用来自测试数据库的数据。当我完成测试后,它会被转移到实时数据库中。
问题是,我有其他项目依赖于生产中的数据,所以我必须运行一个脚本来从我需要的表中获取数据,删除测试数据库中的数据并从实时数据库。
我一直在想办法改进这个模型。问题不在于迁移,因为数据每周只更新一次或两次(我没有采取任何行动)。问题是只在需要时才进行迁移。我想让我的迁移脚本包括对实时表和测试表的快速检查,并在需要时进行移动。如果没有更新,脚本将退出。
这样,我可以在我的其他脚本中包含更新脚本,而不必担心数据是否同步。
我不能使用时间戳。其一,一旦直播端上线,我无法控制直播端的 table ,还因为为了方便而增加更多的 table 似乎有点愚蠢。
我尝试执行“SHOW TABLE STATUS FROM livedb”,但因为表都是 InnoDB,所以没有“更新时间”,另外,“创建时间”似乎是今天早上,让我相信每天备份和重新创建数据库。
表中是否有任何其他属性可以显示两者中哪一个较新?也许是“最新行日期”?
最佳答案
简而言之:在您的应用程序中使开发实时更新成为一流的。与其依赖数据库引擎为您提供必要的信息来让您做出决定(更新还是不更新……这是个问题),只需将其作为你的申请。否则,您就是在尝试将圆钉装入方孔。
在不知道您的数据模型是什么,并且完全不了解您的同步模型是什么的情况下,您有几个选择:
- 将主键与实时数据库与测试数据库进行匹配。当测试 > 实时 ID 时,进行更新。
- 使用表中的时间戳来确定是否需要更新
- 使用数据库表的 md5 散列和修改日期 (UTC) 来确定表是否已更改。
长话短说:数据库同步非常困难。实现特定于您的应用程序的解决方案。没有理想的“通用”解决方案。
关于MySQL表修改时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968122/