mysql转储将新数据和已更改的数据复制到DB

时间:2012-10-25 17:32:21

标签: mysql sql database mysqldump

我有一个60 GB的数据库,我有一个13 GB的实时数据库,现在在实时数据库中有一些新的条目和更新的条目。考虑13GB DB具有相同的初始数据,其中60 GB具有更新的一些行,并且最后几个条目是全新的。不,我想将13 GB复制到60 GB。我有转储但插入命令,当我尝试导入它时,它向我显示外键约束错误,并说它无法删除或更新。所以我需要查询MySQL导入,以便它将复制新数据并更新新的if(如果有的话),并且转储文件是带有create的常规转储文件,插入所有这些并且它不可能更改其中的任何内容:(

1 个答案:

答案 0 :(得分:0)

如果磁盘空间不是问题,我会这样做:

  1. 使数据库脱机
  2. 如果原始dasebase被称为stuff,则创建一个名为stuff_extra
  3. 的新数据库
  4. 将13 GB转储加载到stuff_extra。您现在将拥有两个在架构上相同但在某些数据中不同的数据库
  5. 对于每个表格的东西
    1. 删除stuff.table中也位于stuff_extra.table中的所有行。您可以删除已更改的行,但我认为这是快速的。使用multi table delete
    2. 将stuff_extra.table中的所有行插入stuff.table。使用insert select
  6. 现在,您将拥有来自stuff_extra的所有行。所有已更新的数据都已更新(或真正删除并插入)。