MySQL表修改时间戳

标签 mysql synchronization last-modified datestamp

我有一个测试服务器,它使用来自测试数据库的数据。当我完成测试后,它会被转移到实时数据库中。

问题是,我有其他项目依赖于生产中的数据,所以我必须运行一个脚本来从我需要的表中获取数据,删除测试数据库中的数据并从实时数据库。

我一直在想办法改进这个模型。问题不在于迁移,因为数据每周只更新一次或两次(我没有采取任何行动)。问题是只在需要时才进行迁移。我想让我的迁移脚本包括对实时表和测试表的快速检查,并在需要时进行移动。如果没有更新,脚本将退出。

这样,我可以在我的其他脚本中包含更新脚本,而不必担心数据是否同步。

我不能使用时间戳。其一,一旦直播端上线,我无法控制直播端的 table ,还因为为了方便而增加更多的 table 似乎有点愚蠢。

我尝试执行“SHOW TABLE STATUS FROM livedb”,但因为表都是 InnoDB,所以没有“更新时间”,另外,“创建时间”似乎是今天早上,让我相信每天备份和重新创建数据库。

表中是否有任何其他属性可以显示两者中哪一个较新?也许是“最新行日期”?

最佳答案

简而言之:在您的应用程序中使开发实时更新成为一流的。与其依赖数据库引擎为您提供必要的信息来让您做出决定(更新还是不更新……这是个问题),只需将其作为你的申请。否则,您就是在尝试将圆钉装入方孔。

在不知道您的数据模型是什么,并且完全不了解您的同步模型是什么的情况下,您有几个选择:

  1. 将主键与实时数据库与测试数据库进行匹配。当测试 > 实时 ID 时,进行更新。
  2. 使用表中的时间戳来确定是否需要更新
  3. 使用数据库表的 md5 散列和修改日期 (UTC) 来确定表是否已更改。

长话短说:数据库同步非常困难。实现特定于您的应用程序的解决方案。没有理想的“通用”解决方案。

关于MySQL表修改时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968122/

相关文章:

python - sqlAlchemy 无法识别在 session 之外对数据库所做的更改

Bat 和 Eclipse 之间的 Java 文件同步

javascript - 在点击事件处理程序中,我有 3 个函数。为什么第三个函数在前两个函数完成之前执行?

c++ - 如何同步在不同线程上运行的函数实例(在 C++11 中)?

c# - 如何知道 c# 中任何文件的最后修改用户?

java - Camel 文件: SortBy modified

java - Java中的类可以确定它是否被修改了吗?

mysql - 如何获取当天的数据?

javascript - 通过 PHP 将图像文件(不是通过表单选择,只是在一个文件夹中)上传到 mysql?

MySQL LOCATE 函数在 IF block 中不起作用