欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

【数据库运维】数据库(服务器)的时区设置及世界主要地区的时区

程序员文章站 2024-01-18 13:42:34
...

【时区设置不当会有什么问题】 当进行海外项目运维的时候,经常会遇到时区设置的问题,如果时区设置不当 或者 相同项目的服务器之间的时区不一致,都会有导致项目的数据异常的风险。 如果数据表的字段使用了date类型的字段,字段的默认值是sysdate,并且程序

【时区设置不当会有什么问题】

当进行海外项目运维的时候,经常会遇到时区设置的问题,如果时区设置不当 或者 相同项目的服务器之间的时区不一致,都会有导致项目的数据异常的风险。
如果数据表的字段使用了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=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=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=ZONE="Europe\/Berlin"/g' /etc/sysconfig/clock