本文主要介绍 OceanBase 数据库正常运行所需的网络条件、网络对 OceanBase 数据库可能造成的影响和常见的健康检查点。
需要的基本网络条件
同城跨机房、跨城要求万兆光纤接入,并且采用万兆光纤交换机进行连接。同城网络延迟要求不超过 2 ms。
跨城部署一般要求临近的两个机房副本数能保证 Paxos 多数派,网络延迟不超过 10 ms。
网络 RPC 延迟大的影响
网络 RPC 延迟过大时,可能对 OceanBase 数据库造成以下影响:
OceanBase 数据库的两阶段提交过程,需要 1 次日志延迟和 2 次 RPC 延迟,最终体现在返回给应用层的commit latency。
OceanBase 数据库的全局快照以及分布式一致性读等需要用 GTS 读取全局时间戳的场景,除了 GTS 本身的服务能力上限性能瓶颈,还有网络 RPC 延迟的开销。
OceanBase 数据库的选举模块,可能由于网络 RPC 延迟、机器间的时钟误差、OSload 高等,导致的租约失效,leader主动卸任、进而无主。
Clog 通过 Paxos 协议的多数派写入磁盘的过程,需要远端的 Clog 写入磁盘后进行反馈,最终体现于落盘延迟。
在网络包延迟严重的情况下,follower 副本不能及时收到最新的 clog,会不断发送 clog 传输请求给 leader 副本,这导致 leader 副本收到的 clog 请求次数明显超过正常的次数,这种情况也称为clog 流量放大。
监控方法
通过 ping 来查看网络情况。
ping <对应的机器 IP>具体如下:
ping 192.xxx.xx.xxx返回如下:
64 bytes from 192.xxx.xx.xxx: icmp_seq=1 ttl=63 time=30 ms 64 bytes from 192.xxx.xx.xxx: icmp_seq=2 ttl=63 time=30 ms 64 bytes from 192.xxx.xx.xxx: icmp_seq=3 ttl=63 time=35 ms 64 bytes from 192.xxx.xx.xxx: icmp_seq=4 ttl=63 time=40 ms如果此时 time 时间过大,表示延迟高,需要调整网络。
查询
v$sql_audit视图的EVENT列,检查是否包含mysql response wait client与sync rpc。如果包含以上字段,则说明网络 RPC 延迟较大,需要调整网络。
obclient> SELECT SVR_IP,EVENT FROM v$sql_audit;