在使用mysqldump 按条件导出数据的时候,发现导出的数据比直接在数据库查询数据变少了。
在数据库使用select count(*) from tablename where DATE_FORMAT(Inserted,'%Y-%m-%d') = '2022-12-13'; 查到的数据是662条;然后使用mysqldump -uusr_name -pusr_pwd -hsqlhost databasename --hex-blob -t tablename --where "DATE_FORMAT(Inserted,'%Y-%m-%d') = '2022-12-13'" > dumpdata_20221213.sql 当把数据导入到本地数据库时候发现,数据变成为602条,并且时间比数据库时间加了八个小时。
很明显,第一时间想到时区问题。查看数据库的时区设置:
然后去查了mysqldump的参数,果然发现了问题:
竟然是默认+00:00时区的,所以就出现了这个问题。同时也给了解决方案,使用 --skip-tz-utc 就可以了。
修改备份命令为mysqldump -uusr_name -pusr_pwd -hsqlhost databasename --hex-blob -t tablename --where "DATE_FORMAT(Inserted,'%Y-%m-%d') = '2022-12-13'" --skip-tz-utc > dumpdata_20221213.sql 果然这次数据保持一致了。