首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL数据库从本地同步到联机

将MySQL数据库从本地同步到联机
EN

Stack Overflow用户
提问于 2015-11-21 10:44:08
回答 2查看 3.9K关注 0票数 1

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

在本地DB中,我使用触发器来跟踪每个表的每个insert & update。我们不会硬删除任何东西。使用同步表来保存触发器历史记录。这是我的“同步”表的屏幕截图。

同步表的解释:

  1. 同步表的id ->主键
  2. 发生操作(插入/更新)的表的table_name ->名称
  3. pkey_column_name ->表的主键容器列名(table_name)
  4. row_id -表的主键( table_name)
  5. 类型->enum(插入、更新)
  6. 状况->(同步/非同步)

基于这个同步表,我从本地DB中获取之前没有同步的所有数据,并使用curl向联机DB提交带有这些数据的post请求以插入和更新在线DB。如果此过程成功,则同步表的status列的行将被同步,否则它将保持默认值不同步。

此进程是否足够用于同步进程?如何确保所有数据都成功传输&数据完整性也适用于大数据?这个过程可能会出现什么问题呢?

EN

回答 2

Stack Overflow用户

发布于 2015-11-21 12:39:31

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

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

一个主意。

  1. 查看在线数据库中的新闻,并将新内容“导出”到TXT文件。
  2. 将TXT移动到本地DB
  3. 使用本地DB运行一个查询来同步此内容。
  4. 运行一个查询,从本地DB获取新内容并导出到TXT文件。
  5. 将TXT移动到联机数据库
  6. 运行一个查询,将此内容与联机DB同步。

这比实际更难解释。

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

您必须创建一个cron,以便每5分钟或每5分钟运行一次查询。

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

我希望它适合你。

票数 0
EN

Stack Overflow用户

发布于 2018-07-29 05:54:32

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

代码语言:javascript
复制
    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();

您可以从sync.php下载PHP类文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33842370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档