我有一个本地mysql数据库和一个生产mysql数据库。我在本地进行更改并使用第三方工具将更改同步到实时服务器。该工具使用校验和功能来标识已更改的行。我的db结构很简单,一个varchar200字段(作为主键)和一个文本字段。
问题是同步需要很长时间,因为有数千行。我相信添加一个时间戳字段将快速获取校验和,以便工具识别要同步的行。由于时区差异,本地和prod服务器的时间戳字段不同,这会产生更多问题。
我正在寻找一个有用的想法或替代时间戳,当行被修改时会被更改。
PS:我发布了一个similar question,但没有得到任何有用的答案。我不想依赖额外的桌子。
答案 0 :(得分:2)
你可以做几件事:
答案 1 :(得分:2)
我的提示:请勿使用TIMESTAMP
数据类型,请使用DATETIME
。它们拥有相同类型的数据,但每次触摸行时,{em>>的差异都会更新,即使您没有设置该列,也会使用“now”进行更新,包括插入。
这意味着当您使用TIMESTAMP
时,您永远无法真正同步这两个数据库 - 该列将始终不同。如果您使用TIMESTAMP
,则可以保留该列的数据。
如果您无法对应用程序进行编码以使用“now”更新DATETIME
列,只需创建一个可以为您执行此操作的触发器。
答案 2 :(得分:0)
对行添加时间戳实际上是一个坏主意,当客户端更新自己的最新同步时间时,许多行可能会在服务器上更新,您可能会错过这些行。使用每次在服务器上添加或修改行时增加1的计数器,客户端自行更新并获取计数器的最新值。客户端可能无法获得计数器的最后一个值(例如,当客户端请求更新时某些行会更新)但是保证在下次更新时赶上