将MySQL数据库从本地同步到在线

时间:2015-11-21 10:44:08

标签: mysql database synchronization

我有两个MySQL数据库。一个是在本地PC&另一个是在线服务器。现在我必须将本地数据库与在线数据库同步。我用curl来做这件事。有没有更好的方法来做到这一点,而不会丢失从本地数据库到在线数据库的任何数据?是否有任何建议使用任何工具或库来完成同步过程?

enter image description here

在我的本地数据库中,我使用触发器来跟踪每个插入&更新每个表。我们不会删除任何东西。同步表用于保留触发历史记录。这是我的'同步'表的屏幕截图。

同步表说明:

  1. id - >同步表的主键
  2. table_name - >发生操作(插入/更新)的表的名称
  3. pkey_column_name - >表的主键容器列名(table_name)
  4. row_id - >表的主键(table_name)
  5. type - >枚举(插入,更新)
  6. 状态 - > (同步/未同步)
  7. 基于此同步表,我从本地数据库中获取所有未同步的数据。使用curl将这些数据的发布请求提交到在线数据库以插入&更新在线数据库。如果此过程成功,则同步表的状态列的行将同步,否则将保持默认值不同。

    这个过程对于同步过程是否足够好?如何确保成功传输所有数据&大数据的数据完整性?这个过程可能会出现什么问题?

2 个答案:

答案 0 :(得分:0)

为了与托管服务器交换信息,我更喜欢使用TXT或XML等中间文件。

我假设你的请求不需要实时解决(syncro),它可以支持在几分钟内解决(asyncro)。

一个想法。

  1. 查看在线数据库中的新闻并将新内容“导出”到TXT文件。
  2. 将TXT移至本地数据库
  3. 运行查询以将此内容与本地数据库同步
  4. 运行查询以从本地数据库获取新内容并导出到TXT文件。
  5. 将TXT移至在线数据库
  6. 运行查询以将此内容与在线数据库同步
  7. 比解释起来更难解释。

    为了进行查询,您可以使用: http://www.phpclasses.org/package/1803-PHP-Synchronize-MySQL-database-copies.html

    您必须创建一个cron,每5分钟或您想要的时间运行此查询。

    关注新内容也非常重要:一个明确定义的触发器,显示哪些内容是新内容是在此过程中成功的基准。

    我希望它适合你。

答案 1 :(得分:0)

如果您使用的是PHP,那么这里是一个简单的解决方案。

    include "sync.php";
    $sync = new SyncronizeDB();
    //serverSet(dbserver,user,password,db,table,index)  
    $sync->masterSet("localhost", "root", "", "localdatabase","localtable", "localtable.pk");
    $sync->slaveSet("onlinehostip", "username", "pass", "remotedbname", "remotetable", "remotetable.pk");
    $sync->slaveSyncronization();

您可以从PHP CLASSES

下载sync.php文件。