近期很多用户采用了离线大数据解决方案产品,这里为大家推荐Doris数据仓托管解决方案;
由于 Doris 高度兼容 Mysql 协议,两者在 SQL 语法方面有着比较强的一致性,另外 Mysql 客户端也是 Doris 官方选择的客户端。因此,如需对 Mysql 进行数据分析,使用 Doris 的迁移成本较低。另外加上 Doris 各种优秀的计算能力,对原 Mysql 开发人员来说,基于 Doris 进行 Mysql 数据分析是一个良好的选择。
1.数据同步
Doris Mysql 外表
可以基于 Doris ODBC 外表的机制建立 Mysql 外表。语法如下:
代码语言:javascript复制CREATE EXTERNAL TABLE `doris_mysql_external_tbl1` (
`aaaa` int(11) NULL COMMENT "",
`bbbb` varchar(256) NULL COMMENT ""
) ENGINE=ODBC
COMMENT "ODBC"
PROPERTIES (
"host" = "xxxxx",
"port" = "3306",
"user" = "root",
"password" = "xxxxx",
"driver" = "MySQL ODBC 8.0 Driver",
"odbc_type" = "mysql",
"charest" = "utf8",
"database" = "abc",
"table" = "abc_utf8"
)
2.实时导入 Mysql 数据
有多种生态组件可以方便实现实时导入 Mysql 数据到 Doris。第一种是基于 Mysql binlog Canal 的方案,第二种是 Mysql binlog Flink CDC。
基于 Mysql binlog Canal 实现实时同步
4基于 Mysql binlog Flink CDC 实现实时同步
Flink CDC 基于数据库日志的 Change Data Capture 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游生态,支持捕获多种数据库的变更,并将这些变更实时同步到下游存储。Flink SQL 原生支持的 Changelog 机制,可以让 CDC 数据的加工变得非常简单。用户通过 SQL 便能实现数据库全量和增量数据的清洗、打宽、聚合等操作,极大地降低了用户门槛。此外, Flink DataStream API 支持用户编写代码实现自定义逻辑,给用户提供了深度定制业务的自由度。
适用场景:
- 大量库表或整库导入
- 分库分表数据导入
- 需要额外ETL处理
- 希望导入存量数量
5.配置目标表属性
用户需要先在 Doris 端创建好与 Mysql 端对应的目标表。
Binlog Load 只能支持 Unique 类型的目标表,且必须激活目标表的 Batch Delete 功能。
开启 Batch Delete 的方法可以参考ALTER TABLE PROPERTY
中的批量删除功能。
示例:
--create Mysql table
CREATE TABLE `source_test` (
`id` int(11) NOT NULL COMMENT "",
`name` int(11) NOT NULL COMMENT ""
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
-- create Doris table
CREATE TABLE `target_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
ALTER TABLE target_test ENABLE FEATURE "BATCH_DELETE";