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
;文章来源:https://www.toymoban.com/news/detail-553298.html
注意:文章来源地址https://www.toymoban.com/news/detail-553298.html
- 同一个DB,只能有一个相同的job_name和ip:port + destination运行
- 如果需要修改job,可以STOP SYNC JOB,再次创建job
- 一旦job处于cancel状态(stop),就无法再重启
到了这里,关于apache doris+cannal+mysql实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!