Skip to content

Conversation

@Ryan19929
Copy link
Contributor

背景

备份集群通常出于成本考虑,副本数会比源集群要少。例如生产环境使用 3 副本保证高可用,而备份环境只需 1-2 副本即可满足灾备需求。当前 CCR 默认继承上游副本数设置,导致备份集群资源浪费。

改动说明

新增 replication_num 参数支持自定义下游集群副本数策略。

实现方式

  • 在创建 CCR 任务 API 中新增 replication_num 字段
  • 支持两种模式:
    • 不传或 -1:继承上游副本数(默认行为,使用 reserve_replica=true
    • >0:强制使用固定副本数(如 1 表示单副本)
    • 0:无效值,创建时报错
  • 副本数策略在以下场景生效:
    • 全量/增量快照恢复
    • CREATE TABLE binlog 同步(重写 SQL 中的 replication_allocation
    • ALTER TABLE PROPERTIES 同步(固定模式下忽略上游的副本数修改)
  • 新增 feature flag feature_override_replication_num(默认开启)控制该功能
  • 校验固定副本数不超过下游集群可用 BE 节点数

使用示例

# 继承模式(默认或replication_num : -1)
curl -X POST http://localhost:9190/create_ccr -d '{
  "name": "job1",
  "src": {...},
  "dest": {...}
}'

# 固定模式(备份集群使用 1 副本降低成本)
curl -X POST http://localhost:9190/create_ccr -d '{
  "name": "job2",
  "src": {...},
  "dest": {...},
  "replication_num": 1
}'

NOTE

  1. AddPartition:BInlog-data中没有包含副本数信息,没有改动,使用默认副本数。
  2. ModifyPartition: 暂时未支持。

@w41ter w41ter merged commit 25b993f into selectdb:dev Nov 7, 2025
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants