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),就无法再重启
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Apache Doris(孵化器项目)是一个开源的分布式实时数据仓库,旨在提供高性能和可伸缩性的数据分析和报告能力。它的主要原理和实践如下: 1. 列式存储:Apache Doris使用列式存储来存储数据,即将每列的数据分开存储在不同的文件中。这种存储方式有助于提高数据的压缩率,减少存储空间的占用,并提高数据查询的效率。 2. 分布式架构:Apache Doris采用分布式架构,将数据分片存储在多个节点上,以实现数据的水平扩展和负载均衡。每个节点都有相同的数据副本,确保数据的高可靠性和容错性。 3. Write-optimized:Apache Doris采用了“write-optimized”(写优化)的设计理念,即将写入操作的性能优化至极致。它使用了基于LSM树(Log-structured Merge Tree)的数据结构,将写入操作顺序化和批处理,大大提高了写入性能。 4. 计算与存储分离:Apache Doris将计算和存储分离,通过多个计算引擎(如Palo,Spark)对数据进行分析和查询。这种架构允许根据需求进行灵活的扩缩容,并提供了多种数据接入和导出方式。 在实践中,可以按照以下步骤使用Apache Doris: 1. 安装和配置:首先需要下载和部署Apache Doris,然后进行相关配置,包括节点的IP地址、端口号、数据存储路径等。 2. 数据导入:将数据导入到Apache Doris中,可以通过多种方式,如使用ETL工具、使用JDBC驱动程序或通过API进行数据导入。 3. 数据模型设计:根据需求设计数据模型,包括表的结构、字段名和数据类型等。 4. 数据分片和分布:根据数据量和负载要求,将数据分片存储在不同的节点上,并确保数据的均衡分布。 5. 数据查询和分析:使用SQL语句对数据进行查询和分析,通过连接计算引擎对数据进行处理和计算,并根据需要生成相应的报表和图表。 6. 集群监控和管理:通过监控工具对集群进行实时监控,包括节点的状态、负载情况和性能指标等,及时发现和解决问题。 总之,Apache Doris通过列式存储、分布式架构、写优化和计算与存储分离等原理,提供了高效可靠的数据分析和报告能力。在实践中,可以根据需求进行安装配置、数据导入、数据模型设计、数据查询和分析,以及集群监控和管理等步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值