Oceanbase如何实现全局时钟服务?在分布式场景下如何解决时钟漂移带来的事务一致性问题?
2 个赞
OceanBase 为了解决分布式场景下的时钟漂移问题,确保事务的一致性,采取了如下措施:
-
配置时钟源:
- 为了确保集群内各机器的时间同步,OceanBase 强烈建议在分布式部署时配置 NTP 时钟源。集群内各机器的时间同步是确保 OceanBase 集群正常运行的基础。时钟偏差不能超过 2 秒,否则会导致无主情况。
- 从 V4.0.0 版本开始,OceanBase 支持动态修改时钟,只要修改的间隔在 2 秒以内,就不会对数据正确性和集群稳定运行带来影响。
- 如果 OCP Express 或 OCP 的节点与 OceanBase 集群不在同一节点,也需要进行时钟源同步,以防止因时钟偏差引发 OCP 操作异常。
-
检查 NTP 偏移量:
- OceanBase 数据库是一个分布式数据库,因此集群的多个节点以及 OCP 节点的时钟必须配置时钟同步服务 NTP 或 chrony,确保所有节点的时钟偏差在 2 秒以内。
- 如果集群时间不同步,可能会影响 OceanBase 集群的选举模块,导致没有主副本或脑裂问题。
-
动态调整时钟:
- 当时钟偏差超过 2 秒时,NTP 服务不会更改和矫正系统时间。此时,需要手动调整 OBServer 的操作系统时间,确保时钟同步。
通过以上措施,OceanBase 可以有效解决分布式场景下的时钟漂移问题,确保事务的一致性。
具体信息可参考以下文档:
2 个赞
官方有关资料说从一个特定的全局事务处理哪里获取全局的一致性事务号,这样管从那台上面请求,都会得到全局一致性快照。
2 个赞
选集群中的服务器做NTP Server
1 个赞
应该跟gtid相似的全局时钟服务