mysqldump 根据时间字段导出数据的问题

mysqldump  有很多有用的参数,根据条件导出数据的选项 -w  --where 用的情况并不多。如果不注意还是容易掉进坑里的

mysql server默认的时区跟OS服务器保证一致:


mysql> show variables like '%zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |

date -R
Wed, 23 Nov 2016 21:31:32 +0800

比如在中国大陆都统一使用的东八区.不需要在意时区问题,但是如果需要根据时间导数据的话就要注意了:

--tz-utc SET TIME_ZONE='+00:00' at top of dump to allow dumping of
TIMESTAMP data when a server has data in different time
zones or data is being moved between servers with
different time zones.
(Defaults to on; use --skip-tz-utc to disable.)

不在意这个参数的话,mysqldump    -w   "raw_add_time>='XXXX-XX-XX '" 直接导出来的数据就不准。根据mysql 客户端能查到的数据mysqldump 时可能就dump不到,因为时区少了8个小时!!!

靠谱的做法是mysqldump 时加上--skip-tz-utc 禁用该时区选项:mysqldump    -w   "raw_add_time>='XXXX-XX-XX '"   --skip-tz-utc  这样 mysql 能查到的记录mysqldump也能导出来。

Ps:如果涉及到跨时区数据迁移的话就要当心了

原文地址:https://www.cnblogs.com/xingye001/p/6095580.html