位置:海鸟网 > IT > mySQL >

mysql如何跨时区迁移数据

  问: 如果数据表中有时间字段,现在要迁移到其他时区的服务器上,该如何处理呢?

  答:在高版本的mysqldump中,新增了一个选项:--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.

  看明白了吧。

  简言之,就是导出时增加一个说明,把当地时间都转换成0时区的时间,然后再导入,就能确保跨时区迁移数据了,来看下例子:

  mysql> select * from t1;

  +----+---------------------+

  | id | cur_time |

  +----+---------------------+

  | 1 | 2010-03-14 08:58:18 |

  +----+---------------------+

  现在导出数据:

  mysqldump --tz-utc=1 -t test t1 > t1.sql

  #查看内容

  cat t1.sql

  /*!40103 SET TIME_ZONE='+00:00' */;

  ....

  INSERT INTO `t1` VALUES (1,'2010-03-14 00:58:18');

  可以看到,增加了设定时区的标志。

  mysqldump --tz-utc=0 -t test t1 > t1_1.sql

  #查看内容

  cat t1_1.sql

  INSERT INTO `t1` VALUES (1,'2010-03-14 08:58:18');

  还有更多mysqldump的选项需要去挖掘 :)