跳到主要内容

功能详情

Apache Doris 的跨集群复制(CCR,Cross Cluster Replication)功能用于在多个 Doris 集群之间高效同步数据,常用于异地灾备、读写分离与业务连续性场景。本文按 库 / 表 / 数据 / 分区 / 视图 / 物化视图 / 其它 维度列出 CCR 支持的 Doris 操作清单、对应的同步方式以及最低版本要求,方便用户在搭建 CCR 任务前快速核对兼容性。

适用场景

场景说明
搭建 CCR 任务前核对上下游 Doris 版本是否覆盖目标对象(库 / 表 / 分区 / 视图等)的同步能力
设计上下游集群规划确认哪些表属性、列操作、分区操作可以由 CCR 自动同步
排查 CCR 任务异常对照不支持或受限的操作清单,判断异常是否由非兼容操作引起
升级 Doris 集群评估升级到 2.0.15 / 2.1.6 / 2.1.8 / 3.0.4 等版本后新增支持的同步能力

阅读说明

备注
  1. Doris Version 一列中的 - 表示 Doris 2.0 及以上版本、CCR 所有版本均支持。建议使用 Doris 2.0.15、2.1.6 或更新版本。
  2. CCR Syncer 与 Doris 的版本要求为:Syncer Version >= 下游 Doris Version >= 上游 Doris Version。因此升级顺序为:先升级 Syncer,再升级下游 Doris,最后升级上游 Doris。
  3. CCR 目前不支持存算分离模式。

同步方式术语

CCR 使用以下几种方式将上游变更同步到下游,下文表格中的「同步方式」列均使用这些术语:

同步方式含义
Full Sync全量同步,下游会基于上游快照重新拉取一份完整数据
Partial Sync部分同步,仅同步发生变更的对象或分区,避免触发全量同步
SQL将上游执行的 DDL/DML SQL 语句重放到下游
TXN通过 binlog 中的事务记录同步上游事务,事务在上游可见后下游开始同步

库属性

库级别任务在 Full Sync 时会同步库的属性。

属性是否支持Doris version同步方式说明
replication_allocation支持-Full Sync
data quota不支持
replica quota不支持

修改库属性

CCR 任务不同步修改库属性的操作。

属性是否支持上游是否可以操作下游是否可以操作说明
replication_allocation不支持不可以不可以上下游各自操作会导致 CCR 任务中断
data quota不支持可以可以
replica quota不支持可以可以

重命名库

不支持对上下游做重命名,如果做了,可能导致视图不能工作。

表属性

属性是否支持Doris version同步方式说明
表模型(duplicate、unique、aggregate)支持-SQL
分区分桶支持-SQL
replication_num支持-SQL
replication_allocation(resource group)支持-SQL上游必须与下游一致,BE tag 必须一致,否则 CCR 任务会失败
colocate_with不支持
storage_policy不支持
dynamic_partition支持-SQL
storage_medium支持-SQL
auto_bucket支持-SQL
group_commit 系列支持-SQL
enable_unique_key_merge_on_write支持-SQL
enable_single_replica_compaction支持-SQL
disable_auto_compaction支持-SQL
compaction_policy支持-SQL
time_series_compaction 系列支持-SQL
binlog 系列支持-SQL
variant_enable_flatten_nested支持-SQL
skip_write_index_on_load支持-SQL
row_store 系列支持-SQL
seq 列支持-SQL
enable_light_schema_change支持-SQL
compression_type支持-SQL
index支持-SQL
bloom_filter_columns支持-SQL
bloom_filter_fpp支持
storage_cooldown_time不支持
generated column支持-SQL
自增 id不支持有问题

基础表操作

操作是否支持Doris version同步方式下游是否可以单独操作说明
create table支持-SQL/Partial Sync不支持操作 CCR 任务同步的表。属性参考创建表部分;大部分情况下使用 SQL 同步;部分操作,比如用户建表时打开了某些 session variables,或建表语句中有倒排索引,则使用 Partial Sync
drop table支持-SQL/Full Sync同上2.0.15/2.1.6 前:Full Sync,之后:SQL
rename table表级别任务不支持,库级别任务支持2.1.8/3.0.4SQL同上表级别任务执行 rename 会导致 CCR 任务停止
replace table支持2.1.8/3.0.4SQL/Full Sync同上DB 级别使用 SQL 同步;表级别触发全量同步
truncate table支持-SQL同上
restore table不支持同上

修改表属性

同步方式为 SQL。

属性是否支持Doris version上游是否可以操作下游是否可以操作说明
colocate不支持可以不可以,触发 Full Sync 下游操作会丢失
distribution type不支持不可以同上
dynamic partition不支持可以同上
replication_num不支持不可以不可以
replication_allocation不支持不可以
storage policy不支持不可以不可以
enable_light_schema_change不支持CCR 只能同步轻量级 schema change 的表
row_store支持2.1.8/3.0.4通过 Partial Sync
bloom_filter_columns支持2.1.8/3.0.4通过 Partial Sync
bloom_filter_fpp支持2.1.8/3.0.4通过 Partial Sync
bucket num不支持可以不可以,触发 Full Sync 下游操作会丢失
isBeingSynced不支持不可以不可以
compaction 系列属性不支持可以不可以,触发 Full Sync 下游操作会丢失
skip_write_index_on_load不支持可以同上
seq 列支持-可以不可以,触发 Full Sync 下游操作会丢失
delete sign 列支持-可以同上
comment支持2.1.8/3.0.4可以不可以,触发 Full Sync 下游操作会丢失

列操作

表中 Base Index 上的列操作:

操作是否支持Doris version同步方式下游是否可以操作备注
add key column支持-Partial Sync不可以,会导致 CCR 任务中断
add value column支持-SQL不可以,会导致 CCR 任务中断
drop key column支持-Partial Sync同上
drop value column支持-SQL同上
modify column支持-Partial Sync同上
order by支持-Partial Sync同上
rename支持2.1.8/3.0.4SQL同上
comment支持2.1.8/3.0.4SQL同上
备注

add/drop value column 要求建表时设置 property "light_schema_change" = "true"

表中 Rollup Index 上的列操作:

操作是否支持Doris Version同步方式备注
add key column支持2.1.8/3.0.4Partial Sync
add value column支持2.1.8/3.0.4SQL需要开启 light schema change
drop column支持2.1.8/3.0.4Partial Sync
modify column未知2.1.8/3.0.4Partial SyncDoris 不支持直接修改 rollup column 类型
order by支持2.1.8/3.0.4Partial Sync

Rollup

操作是否支持Doris Version同步方式备注
add rollup支持2.1.8/3.0.4Partial Sync
drop rollup支持2.1.8/3.0.4SQL
rename rollup支持2.1.8/3.0.4SQL

索引

Inverted Index:

操作是否支持Doris Version同步方式备注
create index支持2.1.8/3.0.4Partial Sync
drop index支持2.1.8/3.0.4SQL
build index支持2.1.8/3.0.4SQL

Bloom Filter:

操作是否支持Doris Version同步方式备注
add bloom filter支持2.1.8/3.0.4Partial Sync
alter bloom filter支持2.1.8/3.0.4Partial Sync这里指修改 bloom_filter_columns
drop bloom filter支持2.1.8/3.0.4Partial Sync

数据

导入

导入方式是否支持Doris version同步方式下游是否可以操作说明
stream load支持(临时分区除外)-TXN不可以,如果下游导入了,后续触发 Full 或者 Partial Sync,下游导入的数据会丢失上游事务可见,即数据可见时生成 binlog,下游开始同步。
broker load支持(临时分区除外)-TXN同上同上
routine load支持(临时分区除外)-TXN同上同上
mysql load支持(临时分区除外)-TXN同上同上
group commit支持(临时分区除外)2.1TXN同上同上

数据操作

操作是否支持Doris version同步方式下游是否可以操作说明
delete支持-TXN不可以,如果下游操作,后续触发 Full 或者 Partial Sync,下游操作会丢失上游事务可见,即数据可见时生成 binlog,下游开始同步。
update支持-TXN同上同上
insert支持-TXN同上同上
insert into overwrite支持(临时分区除外)2.1.6Partial Sync同上同上
insert into overwrite支持(临时分区除外)2.0Full Sync同上同上
显式事务(3.0)begin commit不支持

分区操作

操作是否支持Doris version同步方式下游是否可以单独操作说明
add partition支持-SQL不能,后续触发 Full Sync 或者 Partial Sync 会导致下游操作丢失cooldown time 属性及其行为未知
add temp partition不支持同上backup 不支持 tmp partition,从 Doris 2.1.8/3.0.4 开始,可以修改上游 FE 配置:ignore_backup_tmp_partitions 绕过该问题
drop partition支持-SQL/Full Sync同上2.0.15/2.1.6 前:Full Sync,之后:SQL
replace partition支持2.1.7/3.0.3Partial Sync同上Partial Sync 只支持 strict range 和 non-tmp partition 的 replace 方式,否则会触发 Full Sync。
modify partition不支持同上指修改 partition 的 property
rename partition支持2.1.8/3.0.4SQL同上

视图

操作是否支持Doris version同步方式备注
create view支持-SQL上下游同名时可以工作;如果下游已经存在,则会先删除再创建
alter view支持2.1.8/3.0.4SQL
drop view支持2.1.8/3.0.4SQL
备注

由于 Doris 实现的限制,view 中的 column name / view name 不能和 db name 相同。

物化视图

同步物化视图:

操作是否支持Doris Version同步方式备注
create materialized view支持2.1.8/3.0.4Partial Sync上下游同名时可以工作,不同名时需要下游手动重建 view。
drop materialized view支持2.1.8/3.0.4SQL

异步物化视图:

操作是否支持
create async materialized view不支持
alter async materialized view不支持
drop async materialized view不支持
refresh不支持
pause不支持
resume不支持

统计信息

上下游之间不同步,独立工作。

其它

操作是否支持
external table不支持
recycle bin不支持
catalog不支持
workload group不支持
job不支持
function不支持
policy不支持
user不支持
cancel alter job支持