Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MySQL数据库从本地同步到联机_Mysql_Database_Synchronization - Fatal编程技术网

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

将MySQL数据库从本地同步到联机,mysql,database,synchronization,Mysql,Database,Synchronization,我有两个MySQL数据库。一个在本地PC中,另一个在在线服务器中。现在我必须同步本地数据库和在线数据库。我用卷曲来做这个。有没有更好的方法来做到这一点而不丢失本地数据库到在线数据库的任何数据?是否有任何关于完成同步过程的工具或库的建议 在本地数据库中,我使用触发器跟踪每个表的每个插入和更新。我们不会硬删除任何内容。同步表用于保存触发器历史记录。这是我的“同步”表的屏幕截图 同步表的说明: id-->同步表的主键 表\u name-->发生操作(插入/更新)的表的名称 pkey_column_n

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

在本地数据库中,我使用触发器跟踪每个表的每个插入和更新。我们不会硬删除任何内容。同步表用于保存触发器历史记录。这是我的“同步”表的屏幕截图

同步表的说明:

  • id-->同步表的主键
  • 表\u name-->发生操作(插入/更新)的表的名称
  • pkey_column_name-->表的主键容器列名(表名称)
  • 表的行id-->主键(表名称)
  • 类型-->枚举(插入、更新)
  • 状态-->(已同步/未同步)
  • 基于这个同步表,我从本地数据库中获取之前未同步的所有数据,并使用curl向在线数据库提交post请求,以插入和更新在线数据库。如果此过程成功,则同步表状态列的行将同步,否则将保持默认值不同步


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

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

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

    一个想法

  • 查看在线数据库中的新闻,并将新内容“导出”到TXT文件中
  • 将TXT移动到本地数据库
  • 运行查询以将此内容与本地数据库同步
  • 运行查询以从本地数据库获取新内容并导出到TXT文件
  • 将TXT移动到联机数据库
  • 运行查询以将此内容与联机数据库同步
  • 解释比解释更难

    要进行查询,您可以使用:

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

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


    我希望它适合您。

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

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

    一个想法

  • 查看在线数据库中的新闻,并将新内容“导出”到TXT文件中
  • 将TXT移动到本地数据库
  • 运行查询以将此内容与本地数据库同步
  • 运行查询以从本地数据库获取新内容并导出到TXT文件
  • 将TXT移动到联机数据库
  • 运行查询以将此内容与联机数据库同步
  • 解释比解释更难

    要进行查询,您可以使用:

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

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


    我希望它适合您。

    如果您使用的是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,则可以从下载sync.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();
    
    您可以从下载sync.php文件