使用docker安装Dinky

发布于:2025-05-11 ⋅ 阅读:(12) ⋅ 点赞:(0)

说明

由于mysql与Apache 2.0协议不兼容,dinky无法默认提供mysql驱动,所以需要您手动提供mysql依赖并放到/opt/lib 目录下 ,如下图的 mysql-connector-java-5.1.27.jar

sudo mkdir -p /opt/lib

cd /opt/lib

wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.27/mysql-connector-java-5.1.27.jar

报无法建立 SSL 连接。 多执行几次这个命令

在这里插入图片描述

使用 外部mysql数据库

docker run --restart=always -p 8888:8888 \
  --name dinky \
  -e DB_ACTIVE=mysql \
  -e MYSQL_ADDR=127.0.0.1:3306 \ 
  -e MYSQL_DATABASE=dinky \ 
  -e MYSQL_USERNAME=dinky \
  -e MYSQL_PASSWORD=dinky \
  -v /opt/lib:/opt/dinky/customJar/ \ 
  dinky dinkydocker/dinky-standalone-server:1.1.0-flink1.17

-----解释------
docker run \
  --restart=always \    # [容器策略] 容器退出时自动重启,保障服务持续运行
  -p 8888:8888 \        # [端口映射] 将容器内 Dinky 的 8888 端口暴露到宿主机同端口
  --name dinky \        # [容器命名] 指定容器名称,便于后续管理(如重启、日志查看)
  -e DB_ACTIVE=mysql \  # [数据库类型] 指定使用 MySQL 作为元数据存储
  -e MYSQL_ADDR=127.0.0.1:3306 \  # [数据库地址] MySQL 服务地址及端口,需确保宿主机可访问
  -e MYSQL_DATABASE=dinky \       # [数据库名] Dinky 使用的数据库名称(需预先创建)
  -e MYSQL_USERNAME=dinky \       # [数据库用户] 连接 MySQL 的用户名
  -e MYSQL_PASSWORD=dinky \       # [数据库密码] 连接 MySQL 的密码
  -v /opt/lib:/opt/dinky/customJar/ \  # [卷挂载] 将宿主机目录挂载到容器,用于存放 MySQL 驱动等依赖
  dinky docker/dinky-standalone-server:1.1.0-flink1.17  # [镜像名称] 指定 Dinky 镜像及版本

在这里插入图片描述
http://doitedu:8888/#/datastudio (这个是我访问的地址,注意域名切换到自己的)
在这里插入图片描述

创建测试数据:

#登录mysql,创建表插入数据 用于cdc监控
mysql -uroot -p

Drop database if exists test;
Create database test character set utf8;
Use test;
--建表语句:
-- 建表
-- 学生表
CREATE TABLE test.`Student`(
      `s_id` VARCHAR(20),
      `s_name` VARCHAR(20) NOT NULL DEFAULT '',
      `s_birth` VARCHAR(20) NOT NULL DEFAULT '',
      `s_sex` VARCHAR(10) NOT NULL DEFAULT '',
      PRIMARY KEY(`s_id`)
);
insert into test.Student values('01' , '赵雷' , '1990-01-01' , '男');
insert into test.Student values('02' , '钱电' , '1990-12-21' , '男');
insert into test.Student values('03' , '孙风' , '1990-05-20' , '男');
insert into test.Student values('04' , '李云' , '1990-08-06' , '男');
insert into test.Student values('05' , '周梅' , '1991-12-01' , '女');
insert into test.Student values('06' , '吴兰' , '1992-03-01' , '女');
insert into test.Student values('07' , '郑竹' , '1989-07-01' , '女');
insert into test.Student values('08' , '王菊' , '1990-01-20' , '女');
select * from test.Student;

在dinky中操作:

SET sql-client.execution.result-mode = tableau;
CREATE TABLE if not exists mysql_cdc_to_test_Student1 (
     s_id     STRING,
     s_name   STRING,
     s_birth  STRING,
     s_sex    STRING,
     PRIMARY KEY (`s_id`) NOT ENFORCED
) WITH (
    'connector'= 'mysql-cdc',
    'hostname'= 'doitedu',
    'port'= '3306',
    'username'= 'root',
    'password'='root',
    'server-time-zone'= 'Asia/Shanghai',
    'debezium.snapshot.mode'='initial',
    'database-name'= 'test',
    'table-name'= 'Student'
);

select * from mysql_cdc_to_test_Student1;

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到