1

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

数据库"store" on server A和同一个数据库"store" on server B

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

+-----------------------+           +---------------------+
:      jobs             :           :      votes          :
+.......................+           +---------------------+
:job_id     :primary key: --------> : job_id : primary key: (Linked to jobs->job_id)
+-----------+...........+           +---------------------+
:     title             :           :      up             :
+-----------------------+           +---------------------+
:   description         :           :      down           :
+-----------------------+           +---------------------+

表作业和投票通过 相关(链接)foreign key

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

jobs有 2300 行,job_id(primary key)从 1 到 2300

votes有对应的行

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

jobs有 1200 行,job_id(primary key)从 1 到 1200

votes有对应的行

问题:

我想以for server "A" database to server "B"这样的方式导入数据,以便服务器数据库表的行(记录)A's插入到服务器数据库表中,表B's的增量从 1200 开始。并使用 B 的新服务器作业 job_id将相应的插入表中。B's"jobs" job_idB'svotesjob_id

有哪些可能的安全方式来帮助此类数据导入?

我可以简单export SQL from phpMyAdim from server A的然后import to server B's phpMyAdmin。但我害怕失去记录的一致性。

4

2 回答 2

1

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

插入php后获取生成的uuid

于 2013-10-04T18:14:08.410 回答
1

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

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

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

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

于 2013-10-04T18:07:56.510 回答