主服务器上部署着多个针对不同时区国家的电商网站,而且这些网站存储下单时候的字段,MySQL基本上都是使用的 datetime 类型。从服务器N台,主要用于备用 和 Read。然后因为MySQL存储时间类型是没有时区,跟随服务器系统的时区,就导致了如果主从服务器时区不一样,那么同步过去的数据就会立即错误,风险极大。并且有的程序之中已经指定 东八区 或 西五区(纽约时间),然后又在程序中生成 datetime格式时间再插入数据库……关于数据库的时区,其实是服务器上系统的时区,该如何设计才更合理科学?方案一、所有服务器的系统全部使用UTC时区,mysql数据库表字段可以使用datetime来存储时间,应用程序如PHP JAVA在写入的生成时间的时区也都是UTC时区下生成的,等于全部统一。这样就必须保证所有服务器的时区都统一在UTC,查询显示给用户的时候全部转换成当地用户 localtime。但是存在一个问题,比如在其当地时间伦敦是 上午八点发帖,但是如果真的进行时间转换,到了在位于北京的用户看的其发布时间就是下午5点发布的。这样显示其实也不合理 ?方案二、
服务器的时区任意设置,mysql中存放时间的字段全部使用int存时间戳。写入的时候全部写入unix时间戳。但很多已经成型的程序都并不是这样,如果这样全部修改一便,工程量巨大,并且旧数据需要转换。其次同样存在上面那个问题。如何解决数据时区问题?