在PHP和MySQL中,如何将少量记录从一台服务器上的表复制到另一台服务器上具有相同结构的表?

在PHP和MySQL中,如何将少量记录从一台服务器上的表复制到另一台服务器上具有相同结构的表?,php,mysql,sql,database,database-table,Php,Mysql,Sql,Database,Database Table,我在两个不同的服务器上有两个相同的MySQL数据库。最初,这两个数据库具有完全相同的结构并包含相同的数据 但后来两个表中都添加了一些新记录(新用户)。这造成了这些表中数据的差异 现在的问题是,一个表中的旧数据(由于两个数据库的结构和数据相同而存在)被一些未经授权的手段篡改,并且在一个字段中包含空白值 现在,我希望返回上一个版本的数据(如初始版本)。为此,我必须启动一个查询,从一台服务器的同一个表中获取丢失的数据,并将其添加到发生数据篡改问题的另一台服务器上的同一个表中 如果有什么方法可以用PHP

我在两个不同的服务器上有两个相同的MySQL数据库。最初,这两个数据库具有完全相同的结构并包含相同的数据

但后来两个表中都添加了一些新记录(新用户)。这造成了这些表中数据的差异

现在的问题是,一个表中的旧数据(由于两个数据库的结构和数据相同而存在)被一些未经授权的手段篡改,并且在一个字段中包含空白值

现在,我希望返回上一个版本的数据(如初始版本)。为此,我必须启动一个查询,从一台服务器的同一个表中获取丢失的数据,并将其添加到发生数据篡改问题的另一台服务器上的同一个表中

如果有什么方法可以用PHP编写一些脚本来完成这项工作,对我来说也很好

有谁能建议我如何做到这一点

如果你想知道更多关于我面临的问题的细节,请告诉我


谢谢

为什么不从其他服务器导出数据

然后将表导入当前服务器(使用不同的名称或创建新数据库)

更新 不,它不会取代桌子。您可以创建另一个数据库并将其导入新数据库,而不是现有数据库

或者编辑导出文件并更改名称,然后导入。

示例

如果这是您的导出文件:

CREATE TABLE IF NOT EXISTS `Customer` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` char(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
更改名称(注意我将customer更改为customer2)

然后执行导入

CREATE TABLE IF NOT EXISTS `Customer2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` char(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
更新2 现在您有了一个空白列的当前表和一个“备份”表2

两个表都应该具有唯一的id或某种类型

这是基本场景:

循环遍历表1中的所有记录,获得唯一的id列值

使用该ID查找表2中的空白列的值。

从表2中的值中更新表1中的空白列。

SELECT `id` FROM `table1` WHERE 1

SELECT `blankcolumn` FROM `table2` WHERE `id` = $row['id']

UPDATE `table1` SET `blankcolumn` = `table2`.`blankcolumn`

我将创建一个RESTful API,允许一台服务器使用JSON获取、放置、删除内容到另一台服务器

因此,一台服务器有一个URL,您可以向它提交一些JSON(或XML,如果您真的需要)数据

然后,另一台服务器执行CURL请求,并通过服务器发送数据

您可能希望等待,直到您有足够的数据一次发送,这样您就不会经常在服务器之间发出请求

您还可以对系统进行密码保护,这样就不会有其他人知道这一点,从而可以编辑您的数据库:p

有很多内容需要深入研究,但我认为如果您查看如何在PHP中创建RESTAPI,以及如何生成CURL请求,您会发现这非常简单。您还可以使用JavaScript-AJAX调用与这样的系统进行通信,这将带来更多的可能性

某些数据库类型和数据库服务提供程序(它们为您运行数据库)可以将数据库扩展到多个实例来完成这类工作。这可能也值得研究。在数据库相互匹配之前通常会有一段时间的延迟——这就解释了社交媒体和拍卖/分类广告网站上的许多奇怪之处,在这些网站上,一篇帖子可能在一段时间内不会出现


如果数据与一些非常重要的事情有关,比如金融交易,有些钱丢失一段时间是不可接受的,那么您可能需要更加认真地对待这一点。

如果我导出并导入表,那么表中的所有数据都将被替换。基于某些条件,我只想替换少数记录。如何操作?这将创建另一个表。但是如何根据某些条件替换行呢?我的担心仍然没有得到解决。只有被篡改的记录在该字段中有空白值。它是?