比较2个大型SQL文件和寻找差异来恢复数据

Reh*_*mat 6 mysql sql diff compare

我有大约8GB各2个大型SQL文件。但是,在最新的备份中,我发现一个文件缺少300MB数据。

我只想比较丢失的数据,以便可以检查只是临时数据还是重要数据消失了。

在Ubuntu 14.04上通过diff比较两个文件时,我总是会得到内存分配错误。我还尝试了除内存解决方案之外的所有其他解决方案,但仍然无济于事。

我想将sql1中存在但sql2中缺少的所有数据收集到新文件sql3中。

请帮忙!

编辑:最近,我从简单的MySQL服务器转移到Percona的XtraDB集群,很多表都是从MyISAM数据的过程中转化为INNODB。那么,那是mysqldump SQL文件减少300MB的原因吗?我非常怀疑这是因为SQL将是SQL,但是在任何情况下INNODB SQL代码都会减少吗?对此的专家建议会有所帮助。

Ale*_*xei 2

在处理大量数据时,SQL 转储比较很难进行。我会尝试以下操作:

  1. 将每个SQL文件数据导入到自己的数据库中
  2. 使用此处指示的方法之一来比较数据库内容(我假设架构是相同的)。例如Toad for MySql

这种比较方式应该更快,因为存储到数据库中时数据操作要快得多,并且还具有可以轻松使用丢失数据的优点。例如

SELECT *
FROM db1.sometable
WHERE NOT EXISTS (SELECT 1 
                  FROM db2.sometable 
                  WHERE db1.sometable.pkcol = db2.sometable.pk2)
Run Code Online (Sandbox Code Playgroud)

将以方便的方式返回确切的缺失信息。