假设在一个测试数据库中,一年的数据被删除了。我最早在一年内获得了数据的两个 id,最迟在另一个中获得数据,因此这里缺少一系列内容。我的问题; 从数据库的完整实例中使用以下命令是否有任何危险,以便获得可用于修复其中缺少信息块的数据库的工作转储?命令:
mysqldump -t --insert-ignore --skip-opt --single-transaction --quick --where="id<156789339" -w"id>124054297" -u root -p database table > partial.sql
这是在压缩/移动它之后导入的:
zcat partial.sql.gz | mysql -u root -p database table
可能有一个值得一提的警告 - 数据来自 mysql 5.5 (percona),同时导入到 mysql 5.1 实例中,尽管我认为我不知道由此产生的兼容性问题。
我的理解-t
是避免创建CREATE TABLE
语句(--no-create-info
),--insert-ignore
以防我的范围重叠,因此如果该 id 已经存在,它会忽略它,并--skip-opt
确保它不会做一大堆会在导入时破坏事物的事情(--add-drop-tab, --add-locks, --create-options, --disable-keys, --extended-insert, --lock-tables, --quick, and --set-charset
根据手册页对于mysqldump)。只是想确定这就是我在出口方面所需要的一切,以及在最终犯下任何可能的错误之前,我是否可能在进口方面遗漏了什么。