【问题标题】:auto sync two mysql tables with exception自动同步两个mysql表,但有异常
【发布时间】:2013-01-23 08:05:37
【问题描述】:

我有 2 个脚本的 sql 表,我需要同步到另一个,这可以通过 php cron(这是我的计划)从一行中完成

表一表二

第 1 行 第 1 行

第 2 行 第 2 行

第 3 行不同步第 3 行

两个数据库在同一台服务器上 并且同一用户拥有两者的完全权限

我正在寻找通过 cpanel cron 执行此操作的 php 代码

事后考虑是否最好将两者合并,以便使用新数据进行更新?

问题在于,在上面的示例中,我需要第 3 行不更改两个数据库

我是个菜鸟,所以请提前说好,谢谢

更新*

我应该学习如何更好地解释。

这两个数据库都是站点的控制面板,其中一个表行中包含系统 URL,因此如果我共享数据库“站点 2”链接指回“站点 1”,这对我来说是一个复杂的问题,因为我对此很陌生。

我需要使两个数据库保持最新状态,除了单行,这对两个数据库来说又是不同的。

我还没有尝试过任何东西,因为我不知道从哪里开始:(lol

【问题讨论】:

  • 所以要明确一点,您正在寻找一种单向同步,其中Database 2 一直覆盖Database 1?从来没有相反的方式?
  • 那么你有什么尝试?您确定哪些行不需要同步的实际标准是什么?当您说“同步”时,您是指来自一个表的行还是更新到另一个表中的行(即一个表是权威的),或者您是在谈论有条件的双向同步?
  • 保留两个数据库或两个表?如果是数据库 - 在新的 MySQL 版本中有一些复制功能。查看帮助:dev.mysql.com/doc/refman/5.0/en/replication.html

标签: php mysql cron phpmyadmin


【解决方案1】:

您不必使用 cron。 MySQL 当前版本支持TRIGGERSEVENTS

您可以使用 TRIGGER 将数据复制到另一个表。该副本(或任何其他操作)可能由某些事件(如表中的插入、更新或删除)触发。 TRIGGER 可以运行任何查询或任何 PL/SQL 代码。

其他选项是EVENT。这类似于 MySQL 中内置的内部任务调度程序。它还可以运行查询或任何 PL/SQL 代码,但它是由系统时间触发的(如 Linux Cron)。与 cron 相比,它有很多优点。

PL/SQL 是过程 SQL,具有循环、变量等。

如果您认为自己是“菜鸟”,我可以为您解决问题。阅读有关 MySQL 的书籍,或者如果您很懒,请观看一些教程(http://thenewboston.orghttp://phpacademy.org)。

这里没有人会为您编写代码。我们只能修复错误,提供建议等:)

编辑。

事件示例:

-- this is comment in SQL language (line starts with --)
CREATE EVENT event_daily_copy_something
    ON SCHEDULE
      EVERY 1 DAY
    COMMENT 'This text will appear in MySQL Workbench as description of event'
    DO
      BEGIN
        INSERT INTO your_db_name.target_table_name(id, field)
          SELECT id, something
            FROM your_db_name.source_table_name
            WHERE id = 3;
      END

表的同步是相当复杂的。我认为您需要很少的操作。

  1. 检查新行并复制
  2. 检查已删除的行并在“复制”表中删除它们
  3. 检查更改的行(此处源表上的触发器非常有用,因为触发器“知道”编辑了什么行,您可以访问表 1 中的新字段值并使用它们来更新表 2)。

One of MySQL tutorials - thenewboston@youtube.

【讨论】:

  • 是否有任何可用的在线脚本或教程?我已经把它推迟了足够长的时间,我怕我知道的不够多,无法让它发挥作用,哈哈
  • 谢谢,但有没有链接可以分享我遇到的问题(或挑战)的信息?
  • @RickNash 您需要了解 MySQL 基础知识。在这些链接下,您可以找到一些 MySQL 教程。我建议从新波士顿开始。我会在一分钟内将 EVENT 示例添加到我的答案中。
  • @RickNash 我不知道你知道什么。如果您真的完全是 MySQL 菜鸟 - 从第 1 课开始,不要忘记进行实验并做一些练习。附言。请参阅最后添加的链接以回答。
  • 如果你能超越这样的事情 - 你将成为商人,而不是程序员!学习,永不放弃! :)
猜你喜欢
  • 2013-03-12
  • 2019-02-27
  • 2021-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
相关资源
最近更新 更多