Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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
Php MYSQL:导出/导入数据以防止表一致性的最佳方式_Php_Mysql_Database_Phpmyadmin - Fatal编程技术网

Php MYSQL:导出/导入数据以防止表一致性的最佳方式

Php MYSQL:导出/导入数据以防止表一致性的最佳方式,php,mysql,database,phpmyadmin,Php,Mysql,Database,Phpmyadmin,我在两台不同的服务器上有一个数据库 数据库服务器A上的“存储”和相同的数据库服务器B上的“存储” “存储”数据库有以下两个表: +-----------------------+ +---------------------+ : jobs : : votes : +.......................+ +---------------------+ :job_i

我在两台不同的服务器上有一个数据库

数据库
服务器A上的“存储”
和相同的数据库
服务器B上的“存储”

“存储”数据库有以下两个表:

+-----------------------+           +---------------------+
:      jobs             :           :      votes          :
+.......................+           +---------------------+
:job_id     :primary key: --------> : job_id : primary key: (Linked to jobs->job_id)
+-----------+...........+           +---------------------+
:     title             :           :      up             :
+-----------------------+           +---------------------+
:   description         :           :      down           :
+-----------------------+           +---------------------+
表作业和投票通过
外键关联(链接)

服务器A上的数据库“存储”

jobs
有2300行,其
job\u id(主键)
从1到2300开始

投票
有相应的行

服务器B上的数据库“存储”

jobs
有1200行,其
job\u id(主键)
从1到1200开始

投票
有相应的行

问题:

我想将服务器“A”数据库的数据
导入服务器“B”
,这样服务器
A的
数据库表的行(记录)就可以插入到服务器
B的
数据库表中,并从1200开始增加
B的
作业id
。 并使用B的服务器作业作业id的新
作业id
将相应的插入到
B的
投票中

实现此类数据导入的安全方法有哪些?


我只需
从服务器A的phpMyAdmin导出SQL
,然后
导入到服务器B的phpMyAdmin
。但我担心会失去记录的一致性。

您有一些潜在的方法。你使用哪一种可能取决于这是一次性的事情还是你计划多次做的事情

一种非常简单的方法是,在DB A中的两个表中添加(比如10000)所有的自动增量值,然后只创建和SQL脚本,将这些值导入DB B。自动增量序列中会有一个间隙,但这确实是一个问题。(如果要防止出现这种差距,显然可以修改这种方法,将DB B中每个表的确切行数添加到DB A表中的自动增量值中)

另一种方法可能是编写一个脚本来为您执行此迁移。使用这种方法,您可以从DB A读取数据,并在DB B中跨联接进行插入以强制执行关系,同时让DB B自动设置自动增量值


另一种方法可能是将数据从db a导入到db b中的单独表中,然后从新表中选择数据并通过联接插入到现有表中。

您可能需要考虑查看UUID。使用这种方法,您的密钥将是所有服务器上的唯一密钥。为了使这种方法发挥作用,在前端还需要做一些工作,但是一旦使用了它,组合数据库就不是问题了


进行备份。测试备份副本上的操作。如果一切正常,那么在生产环境中也可以这样做。因此,您希望将项目从服务器A添加到服务器B,但不一定关心自动增量值(除了A中的项目需要比DB B中的项目具有更高的自动增量值,以便不存在id冲突)?当然,您需要维护所带来的项目之间的关系?@Mike Brant将服务器A中的项目插入到B中,并使用Bit分配的新Id听起来不错,感谢重播-等待更多其他专家的建议,所以您是说借助PHP或其他脚本,将数据从A插入到B,我的意思是,如果您将数据库设计为使用UUID,那么将两个数据库组合起来是一件微不足道的工作。