使用docker安装Dinky
说明
由于mysql与Apache 2.0协议不兼容,dinky无法默认提供mysql驱动,所以需要您手动提供mysql依赖并放到/opt/lib 目录下 ,如下图的 mysql-connector-java-5.1.27.jar
sudo mkdir -p /opt/libcd /opt/libwget 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 -pDrop 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;