我的应用程序尝试在多个独立服务器之间同步数据库条目 因此,我需要知道自上次同步以来添加或修改了哪些条目。我的想法是为每个必须同步的表添加一个(BIT-)列,指示该行是否已更改。默认值为1,因此新插入的行标记为新行。在每次更新时,“已更改”标志应自动设置为1.我同步后,我想手动将标志重置为0。 我不想手动更新“已更改”标志,因为有很多地方可以插入或更新行。我已经查看了触发器,但据我所知,没有办法在不执行类似
的操作的情况下获取已更改的行IF NEW.col_1 <> OLD.col_1 OR NEW.col_2 <> OLD.col_2 ...
我想避免这种情况,因为数据库结构可能会发生变化 我知道您可以在每个UPDATE上更新一个时间戳列,但是您可以使用其他数据类型吗?
答案 0 :(得分:1)
听起来你想要MySQL Replication。
复制启用来自一个MySQL数据库服务器(主服务器)的数据 要复制到一个或多个MySQL数据库服务器(从属服务器)。 默认情况下,复制是异步的 - 从站无需连接 永久接收来自主服务器的更新。这意味着 更新可以通过长距离连接甚至结束 临时或间歇性连接,如拨号服务。 根据配置,您可以复制所有数据库, 选定的数据库,甚至数据库中的选定表。
这样做的一个优点是,如果MySQL本身处理复制,那么您不需要编写代码来处理同步。将其他从属服务器添加到复制集群也相对容易。
MySQL对如何设置replication有很好的描述。
答案 1 :(得分:1)