Skip to content

OceanBase 网络复制指标

核心网络复制指标

副本同步指标

  1. REPLICA_LOG_SYNC_LATENCY:副本日志同步延迟,单位为毫秒
  2. REPLICA_DATA_SYNC_LATENCY:副本数据同步延迟,单位为毫秒
  3. REPLICA_SYNC_QUEUE_SIZE:副本同步队列大小
  4. REPLICA_SYNC_THROUGHPUT:副本同步吞吐量,单位为 MB/s
  5. REPLICA_SYNC_BYTES:副本同步字节数

Paxos 协议指标

  1. PAXOS_PROPOSE_LATENCY:Paxos 提案延迟,单位为毫秒
  2. PAXOS_COMMIT_LATENCY:Paxos 提交延迟,单位为毫秒
  3. PAXOS_REJECT_COUNT:Paxos 提案被拒绝次数
  4. PAXOS_RETRY_COUNT:Paxos 提案重试次数
  5. PAXOS_TIMEOUT_COUNT:Paxos 提案超时次数

网络通信指标

  1. NETWORK_SEND_LATENCY:网络发送延迟,单位为毫秒
  2. NETWORK_RECV_LATENCY:网络接收延迟,单位为毫秒
  3. NETWORK_SEND_THROUGHPUT:网络发送吞吐量,单位为 MB/s
  4. NETWORK_RECV_THROUGHPUT:网络接收吞吐量,单位为 MB/s
  5. NETWORK_PACKET_LOSS_RATE:网络丢包率
  6. NETWORK_CONNECTION_COUNT:网络连接数

日志复制指标

  1. LOG_SYNC_LATENCY:日志同步延迟,单位为毫秒
  2. LOG_SYNC_BYTES:日志同步字节数
  3. LOG_DISK_FLUSH_LATENCY:日志磁盘刷新延迟,单位为毫秒
  4. LOG_DISK_FLUSH_BYTES:日志磁盘刷新字节数
  5. LOG_QUEUE_SIZE:日志队列大小

网络复制指标监控

内置视图监控

sql
-- 查看副本同步状态
SELECT * FROM oceanbase.GV$OB_REPLICA_STATUS;

-- 查看 Paxos 状态
SELECT * FROM oceanbase.GV$OB_PAXOS_STATUS;

-- 查看网络状态
SELECT * FROM oceanbase.GV$OB_NETWORK_STATUS;

-- 查看日志同步状态
SELECT * FROM oceanbase.GV$OB_LOG_SYNC_STATUS;

OCP 监控

通过 OCP(OceanBase Cloud Platform)可以直观地监控网络复制指标:

  1. 登录 OCP 控制台
  2. 进入集群详情页
  3. 选择 "监控" 标签页
  4. 选择 "网络" 或 "副本同步" 监控视图
  5. 查看相关指标的实时数据和历史趋势

自定义监控脚本

bash
#!/bin/bash
# 监控 OceanBase 网络复制指标的脚本

# 连接数据库
OB_USER="root"
OB_PASS="password"
OB_PORT="2881"
OB_TENANT="sys"

# 执行查询
mysql -h 127.0.0.1 -P $OB_PORT -u $OB_USER -p$OB_PASS -D $OB_TENANT -e "
SELECT 
  svr_ip,
  svr_port,
  replica_log_sync_latency,
  replica_data_sync_latency,
  replica_sync_queue_size,
  paxos_propose_latency,
  paxos_commit_latency,
  network_send_latency,
  network_recv_latency,
  log_sync_latency
FROM oceanbase.GV$OB_REPLICA_STATUS;
"

网络复制指标分析

延迟分析

  1. 识别高延迟节点:通过监控数据识别延迟较高的节点
  2. 分析延迟趋势:查看延迟的历史趋势,识别是否存在周期性或突发性延迟
  3. 关联其他指标:将延迟与网络吞吐量、CPU 使用率等指标关联分析
  4. 定位延迟瓶颈:确定延迟是由网络、磁盘还是 CPU 资源导致

吞吐量分析

  1. 监控吞吐量变化:实时监控网络复制吞吐量的变化
  2. 识别峰值时段:识别吞吐量峰值出现的时段,分析原因
  3. 比较节点吞吐量:比较不同节点的吞吐量,识别不平衡情况
  4. 预测资源需求:根据吞吐量趋势预测未来的资源需求

异常分析

  1. 识别异常指标:设置合理的告警阈值,及时识别异常指标
  2. 分析异常原因:结合日志和其他指标分析异常原因
  3. 采取应对措施:根据异常原因采取相应的应对措施
  4. 记录和总结:记录异常情况和处理措施,总结经验教训

网络复制指标优化

网络配置优化

  1. 优化网络带宽:确保节点间网络带宽充足
  2. 优化网络延迟:使用低延迟网络设备和链路
  3. 配置网络 QoS:为 OceanBase 流量配置优先级
  4. 优化 TCP 配置:调整 TCP 缓冲区大小、超时时间等参数

OceanBase 配置优化

  1. 调整同步模式:根据业务需求调整同步模式(同步/半同步/异步)
  2. 调整复制并发度:优化副本复制的并发度
  3. 优化 Paxos 配置:调整 Paxos 相关参数
  4. 优化日志配置:调整日志缓冲区大小、刷新策略等
sql
-- 调整副本同步模式
ALTER SYSTEM SET replica_sync_mode = 'sync' TENANT = 'tenant_name';

-- 调整复制并发度
ALTER SYSTEM SET replica_sync_concurrency = 8;

-- 调整 Paxos 超时时间
ALTER SYSTEM SET paxos_timeout = 5000;

硬件优化

  1. 使用高性能网卡:采用 10G 或 25G 高速网卡
  2. 优化网络拓扑:减少网络跳数,优化网络拓扑结构
  3. 使用 RDMA 网络:对于对延迟敏感的场景,考虑使用 RDMA 网络
  4. 优化存储配置:使用高性能存储设备,减少磁盘 I/O 延迟

网络复制指标最佳实践

监控建议

  1. 设置合理的告警阈值:根据业务需求和集群规模设置合理的告警阈值
  2. 监控关键指标:重点监控副本同步延迟、Paxos 提交延迟等关键指标
  3. 定期分析历史数据:定期分析历史监控数据,识别潜在问题
  4. 建立基线:建立正常情况下的指标基线,便于识别异常

优化建议

  1. 持续优化:根据监控数据持续优化网络和 OceanBase 配置
  2. 定期评估:定期评估网络复制性能,根据业务需求调整配置
  3. 考虑业务特性:根据业务的读写比例、延迟要求等特性调整同步模式
  4. 测试验证:在进行配置优化后,进行测试验证,确保优化效果

故障排查建议

  1. 快速定位问题:根据监控指标快速定位问题节点和原因
  2. 分级处理:根据问题严重程度采取不同的处理措施
  3. 记录排查过程:详细记录故障排查过程和处理措施
  4. 总结经验:定期总结故障处理经验,完善故障处理流程

常见问题(FAQ)

Q1: 如何判断网络复制延迟是否正常?

A1: 网络复制延迟的正常范围取决于集群规模、网络环境和业务需求。一般来说:

  • 同步模式下,延迟应在毫秒级
  • 半同步模式下,延迟应在几十毫秒级
  • 异步模式下,延迟可能更高,但应保持稳定

建议根据业务需求和实际运行情况建立合理的延迟基线。

Q2: 网络复制延迟高的常见原因有哪些?

A2: 网络复制延迟高的常见原因包括:

  1. 网络带宽不足或网络延迟高
  2. 磁盘 I/O 性能瓶颈
  3. CPU 资源不足
  4. 副本分布不合理
  5. Paxos 配置不当
  6. 业务写入压力过大

Q3: 如何优化网络复制吞吐量?

A3: 可以通过以下方式优化网络复制吞吐量:

  1. 增加网络带宽
  2. 调整复制并发度
  3. 优化存储配置
  4. 调整同步模式
  5. 优化 Paxos 配置
sql
-- 调整复制并发度
ALTER SYSTEM SET replica_sync_concurrency = 16;

Q4: 如何监控跨地域部署的网络复制指标?

A4: 对于跨地域部署的 OceanBase 集群,可以通过以下方式监控网络复制指标:

  1. 使用 OCP 进行统一监控
  2. 部署本地监控代理,收集各地域的指标
  3. 设置合理的跨地域延迟告警阈值
  4. 定期分析跨地域复制的性能数据

Q5: 网络复制指标异常时如何快速定位问题?

A5: 网络复制指标异常时,可以按照以下步骤快速定位问题:

  1. 查看监控数据,确定异常指标和受影响的节点
  2. 检查节点的网络状态和资源使用情况
  3. 查看 OceanBase 日志,分析异常原因
  4. 检查网络设备和链路状态
  5. 根据分析结果采取相应的处理措施
sql
-- 查看节点资源使用情况
SELECT * FROM oceanbase.GV$OB_SERVER_STATUS;

-- 查看 OceanBase 日志
-- 使用 OCP 或直接查看日志文件