【时区设置不当会有什么问题】
当进行海外项目运维的时候,经常会遇到时区设置的问题,如果时区设置不当 或者 相同项目的服务器之间的时区不一致,都会有导致项目的数据异常的风险。
如果数据表的字段使用了date类型的字段,字段的默认值是sysdate,并且程序插入记录的时候使用了字段的默认值,那么就有可能导致数据异常。在修改数据库服务器的时区时,也是需要谨慎操作的。
【服务器时间同步的方法】
# 时间同步服务器请修改为要求的地址(建议使用Windows的地址,因为世界上大部分个人电脑使用的是Windows操作系统。据CNZZ数据,在国内操作系统市场上,2014年1月份,微软Windows系统依旧称霸市场,份额为90.63%)
物理服务器环境:
*/10 * * * * /usr/sbin/ntpdate -u time.windows.com ; /sbin/clock -w >> /tmp/clock.log
虚拟机环境:
*/10 * * * * /usr/sbin/ntpdate -u time.windows.com >> /tmp/clock.log
【如何修改线上项目的时区设置】
替换/etc/localtime的方式会立即对操作系统生效,但是如果操作系统运行有数据库程序软件,数据库是不会立即生效的,必须重启数据库才可以。所以, 如果当前数据库的时区已经有问题了,建议保持现状 或者跟程序的开发确认,给出可行的解决方案之后,在进行数据库维护,修改时区。当然针对刚刚安装的、没有任何业务数据的数据库,可以在修改完操作系统时区之后,进行数据库的重新安装,保障数据库元数据的时区是没有问题的。
切记:不能出故障,如果做有出现故障的风险,而不做能保持现状,那么什么都不做就是做好的选择。
【海外各地区的时区和设置方式】
#################### set timezone #############################
# TimeZone: UTC+8,CST
# Area: China
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sed -i 's/^ZONE.*/ZONE="Asia\/Shanghai"/g' /etc/sysconfig/clock
# TimeZone: UTC+8,SGT
# Area: Singapore
ln -fs /usr/share/zoneinfo/Singapore /etc/localtime
sed -i 's/^ZONE.*/ZONE="Singapore"/g' /etc/sysconfig/clock
# TimeZone: UTC+7,ICT
# Area: Vietnam
ln -fs /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
sed -i 's/^ZONE.*/ZONE="Asia\/Ho_Chi_Minh"/g' /etc/sysconfig/clock
# TimeZone: UTC-8,PST
# Area: US, California
ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
sed -i 's/^ZONE.*/ZONE="America\/Los_Angeles"/g' /etc/sysconfig/clock
# TimeZone: UTC+8,EST
# Area: Au
/usr/share/zoneinfo/Australia/Sydney
ln -sf /usr/share/zoneinfo/Australia/Sydney /etc/localtime
sed -i 's/^ZONE.*/ZONE="Australia\/Sydney"/g' /etc/sysconfig/clock
# TimeZone: UTC+1,CEST
# Area: German
ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime
sed -i 's/^ZONE.*/ZONE="Europe\/Berlin"/g' /etc/sysconfig/clock
# set UTC time
ln -fs /usr/share/zoneinfo/UTC /etc/localtime
sed -i 's/^ZONE.*/ZONE="UTC"/g' /etc/sysconfig/clock
【时区】
维基百科: http://zh.m.wikipedia.org/wiki/%E6%97%B6%E5%8C%BA%E5%88%97%E8%A1%A8