apache doris+cannal+mysql实践

Doris介绍

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。基于此,Apache Doris 能够较好的满足报表分析、即席查询、统一数仓构建、数据湖联邦查询加速等使用场景,用户可以在此之上构建用户行为分析、AB 实验平台、日志检索分析、用户画像分析、订单分析等应用

目标

使用canal同步mysql数据到doris

安装doris

参考:官方快速开始

安装canal

下载安装包:https://github.com/alibaba/canal/releases
或者
wget https://github.com/alibaba/canal/releases/download/canal-1.1.5/canal.deployer-1.1.5.tar.gz
在这里插入图片描述
这里我只安装服务端,可以满足场景,客户端有机会再探索
下载 canal, 访问 release 页面 , 选择需要的包下载, 如以 1.1.5 版本为例

解压缩

mkdir /tmp/canal
tar zxvf canal.deployer-$version.tar.gz  -C /tmp/canal
解压完成后,进入 /tmp/canal 目录,可以看到如下结构
drwxr-xr-x 2 jianghang jianghang  136 2013-02-05 21:51 bin
drwxr-xr-x 4 jianghang jianghang  160 2013-02-05 21:51 conf
drwxr-xr-x 2 jianghang jianghang 1.3K 2013-02-05 21:51 lib
drwxr-xr-x 2 jianghang jianghang   48 2013-02-05 21:29 logs

配置修改

vi conf/example/instance.properties

mysql serverId

canal.instance.mysql.slaveId = 1234
#position info,需要改成自己要同步的数据库信息
canal.instance.master.address = 127.0.0.1:3306 
canal.instance.master.journal.name = 
canal.instance.master.position = 
canal.instance.master.timestamp = 
#canal.instance.standby.address = 
#canal.instance.standby.journal.name =
#canal.instance.standby.position = 
#canal.instance.standby.timestamp = 
#username/password,需要改成自己要同步的数据库信息
canal.instance.dbUsername = canal  
canal.instance.dbPassword = canal
canal.instance.defaultDatabaseName =
canal.instance.connectionCharset = UTF-8
#table regex
canal.instance.filter.regex = .\*\\\\..\*

canal.instance.connectionCharset 代表数据库的编码方式对应到 java 中的编码类型,比如 UTF-8,GBK , ISO-8859-1
如果系统是1个 cpu,需要将 canal.instance.parser.parallel 设置为 false

启动

sh bin/startup.sh

创建目录

cd&mkdir /usr/local/canal

配置mysql

[mysqld]
log-bin=mysql-bin # 开启 binlog
binlog-format=ROW # 选择 ROW 模式
server_id=1 # 配置 MySQL replaction 需要定义,不要和 canal 的 slaveId 重复

我的数据库是8.0.25,默认就是不需要配置,可以查看自己的数据库配置

show GLOBAL VARIABLES LIKE "%log_bin%"
show GLOBAL VARIABLES LIKE "%format%"
show GLOBAL VARIABLES LIKE "%server_id%"

创建mysql的表和doris保持一致

创建mysql中的表

--create Mysql table
CREATE TABLE `demo.test` (
  `id` int(11) NOT NULL COMMENT "",
  `name` int(11) NOT NULL COMMENT ""
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

创建doris中的表
-- create Doris table
CREATE TABLE `test` (
  `id` int(11) NOT NULL COMMENT "",
  `name` int(11) NOT NULL COMMENT ""
) ENGINE=OLAP
UNIQUE KEY(`id`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`id`) BUCKETS 8;

– enable batch delete 此配置在fe配置中,我的版本默认支持
ALTER TABLE target_test ENABLE FEATURE “BATCH_DELETE”;

创建同步任务

CREATE SYNC `dbtest`.`job1`
(
FROM `demo`.`test` INTO `test`, #源库.源表=>当前表
FROM `demo`.`test` INTO `test`  #源库.源表=>当前表
)
FROM BINLOG
(
"type" = "canal",
"canal.server.ip" = "127.0.0.1",
"canal.server.port" = "11111",
"canal.destination" = "example",
"canal.username" = "canal",
"canal.password" = "canal2022"
);

查看同步任务
表名可以忽略
SHOW SYNC JOB;

mysql> SHOW SYNC JOB \G;
*************************** 1. row ***************************
        JobId: 11007
      JobName: job1
         Type: CANAL
        State: CANCELLED
      Channel: db.table->table
       Status: position:[binlog.000005:532030969], executeTime:[2022-12-07 15:03:02], delay:6217ms
    JobConfig: address:localhost:11111,destination:example,batchSize:8192
   CreateTime: 2022-11-23 17:59:16
LastStartTime: 2022-11-23 17:59:16
 LastStopTime: 2022-12-07 15:03:36
   FinishTime: 2022-12-07 15:03:36
          Msg: SyncFailMsg [type=USER_CANCEL, msg=user cancel]
*************************** 2. row ***************************
        JobId: 11014
      JobName: job2
         Type: CANAL
        State: CANCELLED
      Channel: db.table2->table2
       Status: position:N/A
    JobConfig: address:localhost:11111,destination:doris-load,batchSize:8192
   CreateTime: 2022-12-07 14:45:33
LastStartTime: 2022-12-07 14:45:37
 LastStopTime: 2022-12-07 15:03:01
   FinishTime: 2022-12-07 15:03:01
          Msg: SyncFailMsg [type=USER_CANCEL, msg=user cancel]
*************************** 3. row ***************************
        JobId: 11024
      JobName: job1
         Type: CANAL
        State: RUNNING
      Channel: db.table3->table3
       Status: position:[binlog.000005:533045063], executeTime:[2022-12-07 16:01:20], delay:3791ms
    JobConfig: address:10.118.9.50:11111,destination:example,batchSize:8192
   CreateTime: 2022-12-07 15:11:03
LastStartTime: 2022-12-07 15:11:07
 LastStopTime: NULL
   FinishTime: NULL
          Msg: NULL
3 rows in set (0.00 sec)

控制作业

用户可以通过 STOP/PAUSE/RESUME 三个命令来控制作业的停止,暂停和恢复。可以通过 STOP SYNC JOB ; PAUSE SYNC JOB; 以及 RESUME SYNC JOB;

注意:

  • 同一个DB,只能有一个相同的job_name和ip:port + destination运行
  • 如果需要修改job,可以STOP SYNC JOB,再次创建job
  • 一旦job处于cancel状态(stop),就无法再重启
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值