【问题标题】:MySQL table modified timestampMySQL 表修改时间戳
【发布时间】:2010-11-01 08:57:10
【问题描述】:

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

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

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

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

我不能使用时间戳。一方面,一旦上线,我就无法控制直播端的表格,也因为为了方便而增加表格看起来有点傻。

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

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

【问题讨论】:

    标签: mysql synchronization last-modified datestamp


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      如果您的表中有自动增量,您可以比较最大自动增量值以查看它们是否不同。

      但是你用的是哪个版本的mysql呢?

      【讨论】:

      • 问题不仅在于数据是否存在,还在于数据是否匹配,不幸的是。这才是真正让我担心的地方。尽管它是一个测试站点,但有些测试涉及真实世界的情况(一个是需要正确数据的时间表等)。因此,数据尽可能是最新的,这一点至关重要,我不会因为“糟糕,让我运行更新程序”而陷入困境。版本为 5.0.76 Enterprise GPL
      【解决方案3】:

      您可以使用预先存在的解决方案来保持数据库同步,而不是自己动手。我听说过有关 SQLYog 的 SJA 的好消息(请参阅 here)。我自己从未使用过它,但我对他们的其他程序印象深刻。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多