自动同步两个mysql表异常

时间:2013-01-22 23:18:02

标签: php mysql cron phpmyadmin

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

表1表2

第1行< ---->第1行

第2行< ---->第2行

第3行没有同步第3行

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

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

根据想法,最好合并两者,以便两个更新都与新数据一起?

问题是在上面的例子中我需要第3行才能在两个数据库上都没有改变

我非常诺布,所以请提前好好的lol Thx

更新 *

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

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

我需要的是保持两个数据库都是最新的,除了那一行对于两个数据库都是不同的。

我还没有尝试任何东西,因为我不知道从哪里开始:(大声笑)

1 个答案:

答案 0 :(得分:2)

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

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

其他选项是EVENT。这就像在MySQL中构建的内部任务sheduler。它还可以运行查询或任何PL / SQL代码,但它由系统时间(如Linux Cron)触发。与cron相比,它有许多优点。

PL / SQL是程序性SQL,包含循环,变量等。

如果你认为你是“noob” - 我已经治好了你。阅读关于MySQL的书籍或者你是否懒惰 - 观看一些教程(http://thenewboston.orghttp://phpacademy.org)。

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

EDIT。

EVENT示例:

-- 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。)
  4. One of MySQL tutorials - thenewboston@youtube.