本文主要介绍 OceanBase 数据库依赖时钟同步的原理,以及 OceanBase 数据库推荐的时间同步配置。
Paxos 选举协议会检查每个消息在发送端和接收端的时间差(即消息的延迟时间),并且设置了最大允许的延迟,其中同时考虑了 2 个机器间的时钟延迟上限(最大为 100 ms)和 rpc 延迟上限(最大为 200 ms)。
当消息延迟超过上限后,就认为是过期消息,就会被 RootService 的选举模块忽略,此时选举不能正常进行,会导致 OceanBase 数据库集群没有主副本或者发生脑裂。
OceanBase 数据库推荐的时钟同步配置如下:
-
保证每台 OBServer 与时钟服务器的时钟偏差小于 100 ms。
-
其中
ntp_server_ip
为时钟服务器的 IP 地址,如果返回
synchronised to NTP server
则说明已同步。
[root@ntp_server_ip /]# ntpstat synchronised to NTP server (ntp_server_ip) at stratum 4 time correct to within 92 ms polling server every 64 s
- 保证时钟服务器时间同步服务正常运行。
- 保证各个 OBServer 的 NTP 服务状态同步到统一的时钟服务器。
- 保证各 OBServer 服务器的配置文件中记录了至少 1 个时钟服务器。
[root@hostname /]# cat /etc/ntp.conf server xxx.xxx.x.x Fudge xxx.xxx.x.x stratum 10