您的位置:首页 > 运维架构 > Linux

Linux ntpdate时间同步所想到的

2013-11-26 21:54 495 查看
同事与第三方做联调,反映测试据库时间不正确,检查后发现是Linux系统时间没同步。第一反映是去做时间同步(可能大多数人都是这么想的)。然而这个同步几乎耽误了我一下午的时间。

简单记录操作步骤:

1. 用date命令查看当前时间,检查操作系统时间是否正确。

2. 把时间同步命令写到/etc/crontab中

3. 与时间同步服务器做同步 /usr/sbin/ntpdate 192.168.19.10;

3. 写入硬件时钟 /sbin/hwclock -w

4. 用date命令检查时间是否同步

5. 检查数据库中的时间已经正确

6. 退出客户端

一会同事想知道时间同步前与同步后相差多少秒,然后去修改数据。

1. 由于用ntpdate做时间同步时并没有记录日志,所以在/var/log/message中没看到时间同步的记录。

查看/var/log/message
只有这样一条记录:

Nov 26 14:05:26 Test-DB01 kernel: hpet1: lost 2 rtc interrupts

2. 由于已经从客户端退出,客户端也没有开启日志功能,所以无法通过执行命令时产生的日志看到当时同步的记录。

3. 通过linux的history来看执行的历史命令,只能看到执行的命令,但看不到执行的时间。

4. 想通过时间同步服务器查询服务器的同步记录,但时间同步服务器在总部,我们也无法看到。

实在想不到其他的办法了,如果谁有其它方法请不吝赐教。只能用个近似的时间了。

1.由于修改过/etc/crontab,可以看到/etc/crontab最后修改时间。这个时间跟手工执行ntpdate的时间应该不差几秒。

2.由于用hwclock写入过硬件时钟,所以在/etc/adjtime下会有记录。

/etc/adjtime
内容如下:

-0.002542 1385445926 0.000000

1385445926

UTC

mysql> select FROM_UNIXTIME(1385445926) FROM DUAL;

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

| FROM_UNIXTIME(1385445926) |

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

| 2013-11-26 14:05:26 |

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

用这个时间减去/etc/crontab的修改时间,大概可以得出服务器与时间同步服务器之间相差的时间了。

总结:

1.如果ntpdate
同步时加了 -s 写日志参数则在/var/log/message中会有这样的记录

Nov 26 17:28:51 Test-DB01 ntpdate[10764]: adjust time server 192.168.19.10 offset 0.039235 sec

2. 如果在.bash_profile
中记录命令的时间 export HISTTIMEFORMAT="%F %T `whoami` "

则可以看到命令的具体执行时间。根据命令执行的时间差也可以算出同步前后的时间差。

3. 如果在客户端启用记录日志的功能

如果客户端启用了记录日志功能,则什么麻烦都没有了。

可是没有那么多的如果。

不管是生产还是测试,都尽量保持良好的记录操作日志的习惯。让一切操作有迹可寻。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: