首页 > 数据库 > 数据库开发技术 > Linux 一键配置时钟同步全攻略
为了确保 Oracle RAC 环境中的时间同步,通常会使用网络时间协议 (NTP) 或 chrony 来同步各节点的系统时间。这可以确保所有节点都具有一致的时间,从而保证数据库的正常运行和数据的一致性。
首先要先了解下这两种方式的区别以及优缺点,可参考红帽官方文档:
所以在配置时钟同步时,到底是选择 NTP 还是 Chrony 呢?
在 Red Hat Enterprise Linux 7 之前的版本中,默认都是使用 NTP 来配置时钟同步,但在从 Red Hat Enterprise Linux 7 开始,NTP 的用户空间守护进程变成了 chronyd。所以要使用 ntpd 守护进程,则必须禁用chronyd,相反则需要禁用 ntpd。
在 Red Hat Enterprise Linux 8 之后的版本,则完全放弃了 NTP,必须使用 Chrony 来配置时钟同步。
官方选择替换 ntpd,必然是认为 chronyd 可以优于 ntpd,提供了以下原因:
chronyd 可以执行 ntpd 不能执行的操作:
ntpd 可以执行 chronyd 不能执行的操作:
经过以上对比得出结论,除非是系统不支持 chrony 的工具管理或监控的系统外,均建议使用 chrony 来配置硬件时钟。
当没有 Chrony 服务时只能使用 NTP 来配置时钟同步,本文不针对配置讲解过多,主要分享如何快速配置时钟同步。
以下配置命令可一键执行配置:
# 最小化安装系统需要手动安装 ntp 软件
yum install -y ntp
# 启动和开机启动 ntpd 服务
service ntpd start
chkconfig ntpd on
# 时间服务器 IP,请根据实际的IP进行替换
timeserver_ip=192.168.6.101
# 删除默认的时间服务器配置
sed -i '/^server/d' /etc/ntp.conf
# 写入新的时间服务器配置
cat<<-EOF>/etc/ntp.conf
server $timeserver_ip iburst
tos maxdist 30
tinker panic 0
EOF
# 创建 ntpd 进程ID文件
touch /var/run/ntpd.pid
# 编辑 sysconfig 文件来配置 ntpd 服务
cat<<-\EOF>/etc/sysconfig/ntpd
OPTIONS="-g -x -p /var/run/ntpd.pid"
SYNC_HWCLOCK=yes
EOF
# 重启 ntpd 服务,并检查其状态及时间同步情况
service ntpd restart
# 检查时间同步情况
ntpstat
ntpq -p -n
如果是 Red Hat Enterprise Linux 7 上配置 ntp,需要先手动禁用 chrony 服务,否则会造成冲突导致无法正常同步时钟:
# 禁用 chronyd 服务
systemctl stop chronyd.service
systemctl disable chronyd.service
mv /etc/chrony.conf /etc/chrony.conf.bak
拓展一下,如果需要使用 ntpdate 配合 crontab 定时任务来配置时钟同步的方式,则需要禁用 ntp 服务:
# 最小化安装系统需要手动安装 ntpdate 软件
yum install -y ntpdate
# 禁用 ntpd 服务
## rhel6
service ntpd stop
chkconfig ntpd off
## rhel7
systemctl stop ntpd
systemctl disable ntpd
# 时间服务器 IP,请根据实际的IP进行替换
timeserver_ip=192.168.6.101
# 配置 crontab 计划任务,每天中午 12 点执行一次,定时计划根据实际需求自行修改即可
cat<<-EOF>>/var/spool/cron/root
00 12 * * * /usr/sbin/ntpdate -u $timeserver_ip && /usr/sbin/hwclock -w
EOF
## 查看计划任务
crontab -l
## 手动执行验证
/usr/sbin/ntpdate -u $timeserver_ip && /usr/sbin/hwclock -w
Chrony 的配置方式更简单:
# 最小化安装系统需要手动安装 chrony 软件
yum install -y chrony
# 禁用 ntpd 服务,只针对 rhel7 系统
systemctl start ntpd.service
systemctl disable ntpd.service
# 启动和开机启动 chronyd 服务
systemctl start chronyd.service
systemctl enable chronyd.service
# 时间服务器 IP,请根据实际的IP进行替换
timeserver_ip=192.168.6.101
# 删除默认的时间服务器配置
sed -i '/^server/d' /etc/chrony.conf
# 写入新的时间服务器配置
cat<<-EOF>/etc/chrony.conf
server $timeserver_ip iburst
EOF
# 重启 chrony 服务,并检查其状态及时间同步情况
systemctl restart chronyd.service
# 检查时间同步情况
chronyc tracking
chronyc sources -v
拓展一下,如果需要使用 chronyd 配合 crontab 定时任务来配置时钟同步的方式:
# 时间服务器 IP,请根据实际的IP进行替换
timeserver_ip=192.168.6.101
# 配置 crontab 计划任务,每天中午 12 点执行一次,定时计划根据实际需求自行修改即可
cat<<-EOF>>/var/spool/cron/root
00 12 * * * /usr/sbin/chronyd -q 'server $timeserver_ip iburst' && /usr/sbin/hwclock -w
EOF
## 查看计划任务
crontab -l
## 手动执行验证
/usr/sbin/chronyd -q 'server $timeserver_ip iburst' && /usr/sbin/hwclock -w
如有错误,欢迎指正。
原文作者:Lucifer三思而后行;如有侵权,请联系管理员删除。