0、导读
用mysqldump备份数据时,加上 -w 条件选项过滤部分数据,发现导出结果比实际少了40万,什么情况?
本文约1500字,阅读时间约5分钟。
1、问题
我的朋友小文前几天遇到一个怪事,他用mysqldump备份数据时,加上了 -w 选项过滤部分数据,发现导出的数据比实际上少了40万。
要进行备份表DDL见下:
CREATE TABLE `oldbiao` (
`aaaid` int(11) NOT NULL,
`bbbid` int(11) NOT NULL,
`cccid` int(11) NOT NULL,
`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`dddid` int(11) DEFAULT NULL,
KEY `index01` (`ccccid`),
KEY `index02` (`dddid`,`time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
顺便吐槽下,这个表DDL设计的真是low啊。没主键,允许NULL。
mysqldump备份指令增加的 -w/-where 选项是:
-w “time>‘2016-08-01 00:00:00′”
加上这个参数的作用是:只备份 2016-8-1 之后的所有数据,相当于执行了下面这样的SQL命令:
<