代码改变世界

Flink SQL 开发 01:自动化部署和配置管理 - 教程

2025-12-17 19:12  tlnshuju  阅读(62)  评论(0)    收藏  举报

主流方案

维度1. 一体化平台(Dinky / StreamPark)2. 轻量工具链(Jinja2 + CI/CD)3. 云原生 GitOps(Argo CD + K8s)4. 商业平台(Ververica / 云厂商)
上手难度⭐⭐ 中等(需部署平台)⭐ 简单(脚本驱动)⭐⭐⭐ 高(需 K8s/GitOps 基础)⭐⭐ 中等(商业支持)
开发体验✅ 可视化 IDE、变量管理、模板❌ 纯代码/脚本❌ 无 UI,依赖 YAML/脚本✅ 专业 UI + 审计
配置管理✅ 内置变量中心,支持多环境✅ YAML/JSON 外置配置✅ ConfigMap + Secrets✅ Vault / KMS 集成
敏感信息安全✅ 密码脱敏存储(可加密)⚠️ 依赖 CI Secrets✅ K8s Secrets / Vault✅✅ 企业级密钥管理
多环境支持✅ 集群绑定 + 变量隔离✅ 多 config 文件✅ Argo CD Application per env✅ 环境标签/命名空间
CI/CD 集成✅ Webhook / API 触发✅ 原生支持(GitHub Actions 等)✅ GitOps 自动同步⚠️ 依赖厂商 API
作业可观测性✅ 日志、状态、Savepoint❌ 需自行对接监控⚠️ 依赖 Flink UI / Prometheus✅ 全链路监控 + 告警
CDC YAML 支持⚠️ 需转为 SQL❌ 不支持❌ 不支持✅✅ 原生支持
成本 0(开源) 0 0(但人力成本高) 商业授权 / 云费用
适用团队中小团队、数据平台组DevOps 能力强的小团队云原生成熟的大厂金融/政企/重度用户

开发工具

工具开源SQL 编辑器变量/模板密码安全多环境CDC YAML部署难度
Dinky⭐⭐⭐⭐⭐✅(脱敏)⚠️(需转 SQL)
StreamPark⭐⭐✅(ConfigMap)中高
Ververica⭐⭐⭐⭐⭐✅✅(Vault)✅✅
阿里云 Flink⭐⭐⭐⭐✅(KMS)低(托管)
VS Code 插件⭐⭐

维护方式对比

维护方式动态表名密码安全多环境支持自动化适用场景推荐指数
1. 硬编码本地测试
2. 敏感值占位符⚠️(需换文件)认证参数⭐⭐⭐⭐
3. SQL 模板 + 渲染通用生产⭐⭐⭐⭐⭐
4. Flink CDC YAMLCDC 同步⭐⭐⭐⭐⭐
5. K8s ConfigMap⚠️K8s 环境⭐⭐⭐⭐
6. 编程 API + 配置中心✅✅高安全企业⭐⭐⭐

关键结论

  • CDC 场景 → 用 YAML(方式 4)
  • 通用 SQL 场景 → 用模板渲染(方式 3) + 敏感值占位符(方式 2)
  • K8s 环境 → 结合方式 3 + 5
  • 永远不要用方式 1(硬编码)上生产

Dinky

安装

数据库初始化(mysql)

#登录mysql
mysql -uroot -p
#创建数据库
CREATE DATABASE dinky;
#创建用户并允许远程登录
create user 'dinky'@'%' IDENTIFIED WITH mysql_native_password by 'Admin1234';
#授权
grant ALL PRIVILEGES ON dinky.* to 'dinky'@'%';
flush privileges;

 解压到指定目录

tar -xzf  dinky-release-1.19-1.2.3.tar.gz
mv dinky-release-1.19-1.2.3 /opt/module/
cd /opt/module/

配置环境变量

sudo vim /etc/profile.d/myprofile.sh
#设置 dinky 环境变量
export DINKY_HOME=/opt/module/dinky-release-1.19-1.2.3
export PATH=$DINKY_HOME/bin:$PATH
# 配置生效
source /etc/profile

配置 application.yml

vim $DINKY_HOME/config/application.yml
# 修改 Dinky 所使用的数据库类型为 mysql
spring:
  application:
    name: Dinky
  profiles:
    # The h2 database is used by default. If you need to use other databases, please set the configuration active to: mysql, currently supports [mysql, pgsql, h2]
    # If you use mysql database, please configure mysql database connection information in application-mysql.yml
    # If you use pgsql database, please configure pgsql database connection information in application-pgsql.yml
    # If you use the h2 database, please configure the h2 database connection information in application-h2.yml,
    # note: the h2 database is only for experience use, and the related data that has been created cannot be migrated, please use it with caution
    active: ${DB_ACTIVE:mysql} #[h2,mysql,pgsql]

修改mysql 配置文件

vim $DINKY_HOME/config/application-mysql.yml
# 修改 Dinky 的 mysql 链接配置
spring:
  datasource:
    url: jdbc:mysql://${MYSQL_ADDR:127.0.0.1:3306}/${MYSQL_DATABASE:dinky}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: ${MYSQL_USERNAME:dinky}
    password: ${MYSQL_PASSWORD:Admin1234}
    driver-class-name: com.mysql.cj.jdbc.Driver

修改参数(针对 JDK 11)

 vim $DINKY_HOME/bin/auto.sh

注掉这一行

上传依赖

cp $FLINK_HOME/lib/* $DINKY_HOME/extends/flink1.19
# 解决planner 找不到或冲突
rm $DINKY_HOME/extends/flink1.19/flink-table-planner-loader-1.19.3.jar
cp $FLINK_HOME/opt/flink-table-planner_2.12-1.19.3.jar  $DINKY_HOME/extends/flink1.19

管理

 启停

启动$DINKY_HOME/bin/auto.sh start
停止$DINKY_HOME/bin/auto.sh stop
重启$DINKY_HOME/bin/auto.sh restart        
查看状态$DINKY_HOME/bin/auto.sh status
前台启动(调试使用)$DINKY_HOME/bin/auto.sh startOnPending
$DINKY_HOME/bin/auto.sh start
DINKY_HOME is already set to: /opt/module/dinky-release-1.19-1.2.3
DINKY_HOME : /opt/module/dinky-release-1.19-1.2.3 , JAVA_VERSION : 17.0 , FLINK_VERSION : 1.19
From /opt/module/dinky-release-1.19-1.2.3/config/application.yml server.port: 8888
>>>>>>>>>>>>>>>>>>>>> Starting application... <<<<<<<<<<<<<<<<<<<<<<<
[==================================================] 100%(time consuming: 00:00:14)
........................................Start Dinky Successfully........................................
current log path : /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log , you can execute tail -fn1000 /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log to watch the log

查看日志

tail -fn1000 /opt/module/dinky-release-1.19-1.2.3/logs/dinky-start.log

访问 web

浏览器打开:登录 - Dinky Real-time Platform

设置密码

注册 flink 实例

注册数据源

注册mysql数据库

jdbc:mysql://mydoris:3306/app_db?useSSL=false&serverTimezone=UTC

注册doris数据库