Doris:跨集群数据同步(CCR)

一、CCR介绍        

        CCR(Cross Cluster Replication) 是跨级群数据同步,能够在库/表级别将源集群的数据变更同步到目标集群,可用于在线服务的数据可用性、隔离在离线负载、建设两地三中心。CCR 通常被用于容灾备份、读写分离、集团与公司间数据传输和隔离升级等场景。

        CCR 工具主要依赖一个轻量级进程:Syncers。Syncers 会从源集群获取 binlog,直接将元数据应用于目标集群,通知目标集群从源集群拉取数据。从而实现全量和增量迁移。

1.1使用约束

  • 网络约束:需要 Syncer 与上下游的 FE 和 BE 都是通的;下游 BE 与上游 BE 是通的。
  • ThriftPool 限制:开大 thrift thread pool 大小,最好是超过一次 commit 的 bucket 数目大小
  • 版本最低要求:v2.0.3

二、实现跨集群数据同步

2.1 部署源、目标doris集

搭建环境06:部署Doris_doris部署-CSDN博客

2.2 打开集群binlog

# 在源集群和目标集群的 fe.conf 和 be.conf 中配置如下信息:

enable_feature_binlog=true

2.3 部署 syncers

#构建 CCR syncer

git clone https://github.com/selectdb/ccr-syncer

cd ccr-syncer

bash build.sh <-j NUM_OF_THREAD> <--output SYNCER_OUTPUT_DIR>

cd SYNCER_OUTPUT_DIR# 联系相关同学免费获取 ccr 二进制包

#启动和停止 syncer

# 启动
cd bin && sh start_syncer.sh --daemon

# 停止
sh stop_syncer.sh

2.4 打开源集群中同步库/表的 Binlog

-- 如果是整库同步,可以执行如下脚本,使得该库下面所有的表都要打开 binlog.enable
vim shell/enable_db_binlog.sh
修改源集群的 host、port、user、password、db
或者 ./enable_db_binlog.sh --host $host --port $port --user $user --password $password --db $db

-- 如果是单表同步,则只需要打开 table 的 binlog.enable,在源集群上执行:
ALTER TABLE enable_binlog SET ("binlog.enable" = "true");

2.5 向 syncer 发起同步任务

curl -X POST -H "Content-Type: application/json" -d '{
    "name": "ccr_test",
    "src": {
    "host": "localhost",
    "port": "9030",
    "thrift_port": "9020",
    "user": "root",
    "password": "",
    "database": "demo",
    "table": "example_tbl"
    },
    "dest": {
    "host": "localhost",
    "port": "9030",
    "thrift_port": "9020",
    "user": "root",
    "password": "",
    "database": "ccrt",
    "table": "copy"
    }
}' http://127.0.0.1:9190/create_ccr

三、Syncers 其他操作

3.1 元数据管理

        Syncer 目前能够使用两种数据库来保存自身的元数据,分别为sqlite3(对应本地存储)和mysql(本地或远端存储),默认值为 sqlite3。在使用 mysql 存储元数据时,Syncer 会使用CREATE IF NOT EXISTS来创建一个名为ccr的库,ccr 相关的元数据表都会保存在其中。

# 指定元数据存储类型

bash bin/start_syncer.sh --db_type mysql

# 指定 sqlite3 生成的 db 文件名及路径

bash bin/start_syncer.sh --db_dir /path/to/ccr.db

#指定mysql连接信息

bash bin/start_syncer.sh --db_host 127.0.0.1 --db_port 3306 --db_user root --db_password "qwe123456"

3.2 使用约束

  • 需要 Syncer 与上下游的 FE 和 BE 都是通的
  • 下游 BE 与上游 BE 是通的
  • 对外 IP 和 Doris 内部 IP 是一样的,也就是说show frontends/backends看到的,和能直接连的 IP 是一致的,要是直连,不能是 IP 转发或者 nat
  • Doris 版本最低要求:v2.0.3

3.3 Syncer 高可用

        Syncer 高可用依赖 mysql,如果使用 mysql 作为后端存储,Syncer 可以发现其它 syncer,如果一个 crash 了,其他会分担他的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_37559973

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值