我有一个情况。当我们升级我们的服务器驱动器时,我们备份了我们的数据库,然后再次导入它,然后网站就上线了,一周后我们意识到导入并没有从转储文件复制整个备份,因为当我们检查它只有 13 GB 时它假设为 60 GB。有趣的是,我们发现有一张大表以一种有趣的方式复制,它很大,它只是复制了一些初始记录,比如 2000-5000,它复制了最后的记录,比如 400000-500000,但没有之间的记录。这不是很奇怪吗?因为当我们导入时,我们检查了初始和最后一个条目,并认为它复制了所有内容。然后我们创建了一个新的数据库并再次导入了一个转储,现在看起来没问题,但是我们的实时数据库中已经有了新条目(13GB 数据),所以我们必须复制这些并添加到我们新导入的数据库中。将这些新记录复制到恢复的数据库中的空闲方式是什么?我的意思是一些查询,它将搜索新数据库并仅添加找到的新记录。那么我是否必须转储我们的 13 GB 然后导入?或者无论如何可以从实时数据库中复制?
问问题
1248 次
1 回答
0
您可以将 mysqldump 与以下选项一起使用:--insert-ignore
- 编写 INSERT IGNORE 语句而不是 INSERT 语句 ( http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_insert-ignore ) 使用 IGNORE 关键字,a不会插入与表中现有 UNIQUE 索引或 PRIMARY KEY 值重复的行,并且不会发出重复键错误。
于 2012-10-29T01:10:02.737 回答