[大数据]Dinky0.7.5+Flink1.15.4集群部署及MySQL整库同步到Doris

环境准备

IP Hostname Role Role2
10.0.0.1 flink-01 master,woker JobManager,TaskManager,Dinky
10.0.0.2 flink-02 woker TaskManager
10.0.0.3 flink-03 woker TaskManager
安装JDK
yum install java-11-openjdk.x86_64  java-11-openjdk-devel.x86_64 -y
配置hosts
vim /etc/hosts
10.0.0.1 flink-01
10.0.0.2 flink-02
10.0.0.3 flink-03
配置免密
  1. 在flink-01上面生成公钥和私钥对,按照提示一直按下回车键,直到生成密钥对为止。
ssh-keygen -t rsa
  1. 将flink-01上生成的公钥复制到flink-01,flink-02,flink-03
ssh-copy-id root@flink-01
ssh-copy-id root@flink-02
ssh-copy-id root@flink-03

1. Flink集群部署

Master节点操作
  1. 获取Flink安装包
cd /opt && wget https://archive.apache.org/dist/flink/flink-1.15.4/flink-1.15.4-bin-scala_2.12.tgz
  1. 解压压缩包并创建软链接
tar xf flink-1.15.4-bin-scala_2.12.tgz
ln -s flink-1.15.4 flink
  1. 修改配置文件f
### 使用 DinkyFlinkCDC 实现 MySQL 同步配置教程 #### 1. 配置概述 为了实现 MySQL 数据库的全量同步至目标存储(如 Doris 或 StarRocks),可以通过 Dinky 提供的功能来构建基于 FlinkCDC 的 Pipeline。此过程涉及源端数据库连接、数据捕获以及目标端的数据写入等多个环节。 以下是具体的操作指南: --- #### 2. 源端 MySQL 配置 在创建 Pipeline 前,需确保已准备好 MySQL 数据库的相关信息,包括但不限于主机地址、端口、用户名和密码等基本信息。这些参数将在后续的 Source 配置中被引用[^1]。 ```sql -- 示例 MySQL 数据库结构 CREATE DATABASE IF NOT EXISTS test; USE test; CREATE TABLE products ( id INT PRIMARY KEY, name VARCHAR(255), price DECIMAL(10, 2) ); CREATE TABLE orders ( order_id INT PRIMARY KEY, product_id INT, quantity INT ); ``` 上述 SQL 创建了一个 `test` 及其下的两张表 `products` 和 `orders`,作为演示对象[^3]。 --- #### 3. 构建 Source 环节 Source 节点负责从 MySQL 获取增量或全量数据流。以下是一个典型的 JSON 格式的 Source 参数模板: ```json { "plugin_name": "mysql-cdc", "hostname": "#{host}", "port": "#{port}", "username": "#{username}", "password": "#{password}", "database-name": ["#{schemaName}"], "table-name": ["#{tableName}"] } ``` 其中: - `#{host}` 替换为 MySQL 主机地址; - `#{port}` 替换为 MySQL 端口号,默认为 3306; - `#{username}` 和 `#{password}` 是访问权限凭证; - `#{schemaName}` 和 `#{tableName}` 将分别由实际的名和表名单独填充。 --- #### 4. 定义 Sink 环节 Sink 节点用于将来自 Source 的数据写入目标存储系统。假设目标是 Apache Doris,则可参考如下配置: ```json { "plugin_name": "doris", "fe-nodes": "localhost:8030", "table-identifier": "#{sinkSchema}.#{sinkTable}", "user": "#{sinkUser}", "password": "#{sinkPassword}" } ``` 在此配置中: - `#{sinkSchema}` 对应目标 Schema 名称(例如 `ods`); - `#{sinkTable}` 自动映射为目标表名称前缀加原表名的小写形式(如 `test__products`)。这一步遵循了同步的标准命名约定。 如果目标改为 StarRocks,则其配置逻辑相似,仅需调插件名称及相关属性值即可[^2]。 --- #### 5. 测试与验证 完成以上两部分后,在 Dinky 平台上启动对应的 Job,并观察运行状态日志以确认无误。一旦发现异常情况,可通过调试工具定位问题所在并及时修正。 此外,还需注意定期维护上下游系统的元数据一致性,防止因版本升级或其他变更引发兼容性隐患。 --- #### 6. 注意事项 - **字段匹配**:确保 MySQL 表结构能够顺利映射到下游目标表上,必要时手动干预字段类型转换。 - **性能调优**:针对大规模数据迁移场景,合理设置并发度及其他资源分配策略。 - **错误处理机制**:提前规划好失败重试次数上限及告警通知方式,保障作业稳定性。 --- ### 示例代码片段 下面展示了一段完的 YAML 文件定义样例,适用于描述个流程链路: ```yaml name: mysql_to_doris_pipeline source: plugin_name: mysql-cdc hostname: localhost port: 3306 username: root password: secret database-name: [test] table-name: [] transform: - type: map fields: - from: 'id' to: 'product_id_mapped' sink: plugin_name: doris fe-nodes: localhost:8030 table-identifier: ods.test__products user: admin password: passw0rd ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值