我听说过如果你在运行时改变系统时间,就会发生数据库和邮件服务器发生坏事的传闻.但是,我很难找到有关实际风险的具体信息.
我在Debian Wheezy主机上运行了一个生产Postgres 9.3服务器,时间缩短了367秒.我可以在Postgres运行时运行ntpdate或启动openntp,还是可能导致问题?如果是这样,什么是更安全的纠正时间的方法?
是否有其他服务对系统时间的变化更敏感?也许邮件服务器(exim,sendmail等)或消息队列(activemq,rabbitmq,zeromq等)?
解决方法
数据库不喜欢向后的步骤,因此您不希望以跳转时间的默认行为开始.如果偏移量小于600秒(10分钟),则将-x选项添加到命令行将延迟时间.在最大转换速率下,将时钟调整一分钟需要大约一天半的时间.这是一种调整时间的缓慢但安全的方法.
在运行ntp调整时间之前,您可能需要使用-g 2之类的选项启动ntp以验证它检测到的偏移量有多大.这会将恐慌偏移设置为2秒,这应该是相对安全的.
我在此选项之前使用的另一种选择是编写一个循环,每分钟左右将时钟重置为秒的一部分.如果你检查以确保重置不会改变第二个这可能是安全的.如果大量使用时间戳,则可能会出现序列不一致的记录.
常见的选择是关闭服务器足够长的时间,以免时钟向后移动. ntp或ntpdate可配置为在启动时将时钟跳转到正确的时间.这应该在数据库启动之前完成.