注意:从这个版本开始 doris 和 ccr-syncer 的 2.0 版本将不再更新,需要使用 ccr-syncer 的需要先升级到 2.1 及以上版本。
- 修复 table name 中带
-
无法同步的问题 (#168) - 修复部分同步下可能同步多次增量数据的问题 (#186)
- 修复 create 又立即 drop 的情况下无法找到 table 的问题 (#188)
- 跳过不支持的 table 类型,比如 ES TABLE
- 避免在同步快照、binlog 期间对上游 name 产生依赖 (#205, #239)
- 修复全量同步期间 view 的别名问题 (#207)
- 修复 add partition with keyword name 的问题 (#212)
- 跳过 drop tmp partition (#214)
- 修复快照过期的问题,过期后会重做 (#229)
- 修复 rename 导致的上下游 index name 无法匹配的问题 (#235)
- 修复并行创建 table/backup 时 table 丢失的问题 (#237)
- 修复 partial snapshot 期间,上游 table/partition 已经被删除/重命名/替换的问题 (#240, #241, #249, #255)
- 检查 database connection 错误 (#247)
- 过滤已经被删除的 table (#248)
- 修复 create table 时下游 table 已经存在的问题 (#161)
- 支持 atomic restore,全量同步期间下游仍然可读 (#166)
- 支持处理包装在 barrier log 中的其他 binlog (主要用于在 2.0/2.1 上增加新增的 binlog 类型)(#208)
- 支持 rename table (2.1) (#209)
- 跳过 modify partition binlog (#213)
- 支持 modify comment binlog (#140)
- 支持 replace table binlog (#245)
- 支持 drop view binlog (#138)
- 支持 modify view def binlog (#184)
- 支持 inverted index 相关 binlog (#252)
- 支持 table sync 下的 txn insert (WIP) (#234, #259)
- 支持 rename partition/rollup binlogs (#268)
- 支持 add/drop rollup binlogs (#269)
- 支持 modify view/comment in 2.1 (#270, #273)
- 支持 table sync 下的 replace table (#279)
- 支持同步 rename column,需要 doris xxxx (#139)
- 支持在全量同步过程中,遇到 table signature 不匹配时,使用 alias 替代 drop (#179)
- 增加 monitor,在日志中 dump 内存使用率 (#181)
- 过滤 schema change 删除的 indexes,避免全量同步 (#185)
- 过滤 schema change 创建的 shadow indexes 的更新,避免全量同步 (#187)
- 增加
mysql_max_allowed_packet
参数,控制 mysql sdk 允许发送的 packet 大小 (#196) - 限制一个 JOB 中单个 BE 的 ingest 并发数,减少对 BE 的连接数和文件描述符消耗 (#195)
- 避免在获取 job status 等待锁 (#198)
- 避免 backup/restore 任务阻塞查询 ccr job progress (#201, #206)
- 避免将 snapshot job info 和 meta (这两个数据可能非常大)持久化到 mysql 中 (#204)
- 上游 db 中没有 table 时,打印 info 而不是 error (#211)
- 在 ccr syncer 重启后,复用由当前 job 发起的 backup/restore job (#218, #224, #226)
- 支持读取压缩后的快照/恢复快照时压缩,避免碰到 thrift max message size 限制 (#223)
- API job_progress 避免返回 persist data (#271)
- 修复
REPLACE_IF_NOT_NULL
语句的默认值语法不兼容问题 (#180) - 修复 table sync 下 partial snapshot 没有更新 dest table id 的问题 (#178)
- 修复 table sync with alias 时,lightning schema change 找不到 table 的问题 (#176)
- 修复 db sync 下 partial snapshot table 为空的问题 (#173)
- 修复 create table 时下游 view 已经存在的问题(先删除 view),feature gate:
feature_create_view_drop_exists
(#170,#171) - 修复 table not found 时没有 rollback binlog 的问题
- 修复下游删表后重做 snapshot 是 table mapping 过期的问题 (#162,#163,#164)
- 修复 full sync 期间 view already exists 的问题,如果 signature 不匹配会先删除 (#152)
- 修复 2.0 中 get view 逻辑,兼容 default_cluster 语法 (#149)
- 修复 job state 变化时仍然更新了 job progress 的问题,对之前的逻辑无影响,主要用于支持 partial sync (#124)
- 修复 get_lag 接口中不含 lag 的问题 (#126)
- 修复下游 restore 时未清理 orphan tables/partitions 的问题 (#128)
- 修复下游删表后重做 snapshot 时 dest meta cache 过期的问题 (#132)
- 增加
/force_fullsync
用于强制触发 fullsync (#167) - 增加
/features
接口,用于列出当前有哪些 feature 以及是否打开 (#175) - 支持同步 drop view(drop table 失败后使用 drop view 重试)(#169)
- 支持同步 rename 操作 (#147)
- schema change 使用 partial sync 而不是 fullsync (#151)
- partial sync 使用 rename 而不是直接修改 table,因此表的读写在同步过程中不受影响 (#148)
- 支持 partial sync,减少需要同步的数据量 (#125)
- 添加参数
allowTableExists
,允许在下游 table 存在时,仍然创建 ccr job(如果 schema 不一致,会自动删表重建)(#136)
- 过滤已经删除的 partitions,避免 full sync,需要 doris 2.0.14/2.1.5 (#117)
- 过滤已经删除的 tables,避免 full sync (#123)
- 兼容 doris 3.0 alternative json name,doris 3.0 必须使用该版本的 CCR syncer (#121)
- 修复 list jobs 接口在高可用环境下不可用的问题 (#120)
对应 doris 2.0.11。
- 修复 drop partition 后因找不到 partition id 而无法继续同步的问题 (#82)
- 修复高可用模式下接口无法 redirect 的问题 (#81)
- 修复 binlog 可能因同步失败而丢失的问题 (#86,#91)
- 修改 connect 和 rpc 超时时间默认值,connect 默认 10s,rpc 默认 30s (#94,#95)
- 修复 view 和 materialized view 使用造成空指针问题 (#100)
- 修复 add partition sql 错误的问题 (#99)
- 修复因与上下游 FE 网络中断而触发 full sync 的问题
- 增加
/job_progress
接口用于获取 JOB 进度 - 增加
/job_details
接口用于获取 JOB 信息 - 保留 job 状态变更的各个时间点,并在
/job_progress
接口中展示
- 修复若干 keywords 没有 escape 的问题
配合 doris 2.0.9 版本
- 添加选项以启动 pprof server
- 允许配置 rpc 合 connection 超时
- restore 每次重试时使用不同的 label 名
- update table 失败时(目标表不存在)会触发快照同步
- 修复同步 sql 中包含关键字的问题
- 如果恢复时碰到表 schema 发生变化,会先删表再重试恢复
- 现在可以部署多个Syncer节点来保证CCR功能的高可用。
- db是Syncer集群划分的依据,同一个集群下的Syncer共用一个db。
- Syncer集群采用对称设计,每个Syncer都会相对独立的执行被分配到的job。在某个Syncer节点down掉后,它的jobs会依据负载均衡算法被分给其他Syncer节点。
- 增加 enable_db_binlog.sh 方便用户对整库开启binlog
-
更新日志格式,提高日志可读性,现在日志的格式如下,其中hook只会在
log_level > info
的时候打印:# time level msg hooks [2023-07-18 16:30:18] TRACE This is trace type. ccrName=xxx line=xxx [2023-07-18 16:30:18] DEBUG This is debug type. ccrName=xxx line=xxx [2023-07-18 16:30:18] INFO This is info type. ccrName=xxx line=xxx [2023-07-18 16:30:18] WARN This is warn type. ccrName=xxx line=xxx [2023-07-18 16:30:18] ERROR This is error type. ccrName=xxx line=xxx [2023-07-18 16:30:18] FATAL This is fatal type. ccrName=xxx line=xxx
-
现在可以指定log的等级和log文件的路径
--log_level <level>
:
level可以是trace、debug、info、warn、error、fatal,log的数量依次递减。默认值为info
--log_dir </PATH/TO/LOG/FILE>
:
log文件路径包括路径+文件名,如:/var/myfile.log,默认值为log/ccr-syncer.log
例:
sh start_syncer.sh --daemon --log_level trace --log_dir /PATH/TO/LOG/FILE
-
非守护进程状态下会在日志打印到终端的同时利用tee将其保存在
log_dir
中 -
在日志中屏蔽了用户的敏感信息
-
现在可以指定syncer持久化DB的文件路径
--db_dir </PATH/TO/DB/FILE>
:
DB文件路径包括路径+文件名,如:/var/myccr.db,默认值为db/ccr.db
例:
sh start_syncer.sh --daemon --db_dir /PATH/TO/DB/FILE