多 Zone 三副本集群,单 Zone 整体宕机恢复后,大量分区出现replica stale,补副本反复失败,RS 日志报 paxos propose retry exceed max times

问题现象

  1. 3Zone 集群:zone1/zone2/zone3,每分区 3 副本,单 zone3 整机断电重启;
  2. zone3 节点拉起后,unit 自动迁移、副本复制启动,但 90% 分区提示副本过期;
  3. rereplication 持续重试,几小时无法完成,业务部分分区读性能雪崩,无写入报错;
  4. observer clog 日志:paxos group propose log failed, peer replica log lag too far, max gap 1200w clog record
3 个赞

你这是 OB Paxos 副本补副本分 2 阶段:日志追赶(clog replay)+ 基线转储基线拷贝。宕机 zone 堆积海量未同步 clog,且故障 zone 内 SSTable 基线版本落后多数派,单纯回放日志代价极高;同时集群ob_clog_replay_concurrency默认并发低,大量分区抢占 IO 队列互相阻塞,补副本卡死。
分步复杂处理方案(不可直接删 server,会触发多数派风险)

  1. 先临时放开集群副本复制并发,sys 租户执行:
    ALTER SYSTEM SET ob_rereplication_concurrent_group_count = 200;
    ALTER SYSTEM SET ob_clog_replay_concurrency = 64;
    ALTER SYSTEM SET ob_paxos_max_proposal_retry_times = 10000;
  2. 筛选滞后最严重分区,单独手动触发基线拷贝(绕过日志回放):
    SELECT t1.tenant_id,t1.table_id,t1.partition_id,t2.svr_ip,lag_log_cnt
    FROM __all_virtual_partition_info t1
    JOIN __all_virtual_replica_stat t2 ON t1.tenant_id=t2.tenant_id AND t1.table_id=t2.table_id AND t1.partition_id=t2.partition_id
    WHERE lag_log_cnt > 1000000;
    ALTER SYSTEM MIGRATE PARTITION tenant_id=xxx,table_id=xxx,partition_id=xxx TO ‘ip:2882’;
  3. 业务低峰临时关闭自动合并,释放磁盘 IO 给补副本:
    ALTER SYSTEM SET merge_schedule = ‘manual’;
    长期规避:多 zone 集群配置 clog 独立高速 SSD,配置ob_clog_file_max_size扩容单日志文件上限,zone 故障后不要一次性拉起全部节点,分批启动降低 IO 冲击。
3 个赞

大佬666

向大师学习,回答中的那些参数在官方文档里都没见过,是在官方网站的帮助里么

学习了,再遇到这样问题,可以参考。