Flink同步数据mysql到doris
- 官方同步流程
- Doris安装
- 下载地址
- 导入镜像
- 启动配置
- Flink-cdc安装(自制)
- 下载地址
- 导入镜像
- 启动命令
- 启动问题修复
- Flink报错Could not acquire the minimum required resources.
- 作业报错 Mysql8.0 Public Key Retrieval is not allowed
- 作业报错Connect to 127.0.0.1:8040 [/127.0.0.1] failed: Connection refused (Connection refused)
- Flink通过Nginx接入Doris最小限度接口
官方同步流程
Streaming ELT 同步 MySQL 到 Doris
Doris安装
下载地址
链接: https://pan.baidu.com/s/1tXt-te-qbfDO1VYgUdk82Q?pwd=nudt 提取码: nudt
导入镜像
docker load -i doris-standalone.tar
启动配置
docker-compose配置如下:
version: '2.1'
services:doris:image: yagagagaga/doris-standaloneports:- "8030:8030"- "8040:8040"- "9030:9030"environment:- TZ=Asia/Shanghai
Flink-cdc安装(自制)
下载地址
链接: https://pan.baidu.com/s/1S0Mlsfey3PqhEM7PEnZ0nA?pwd=82d9 提取码: 82d9
导入镜像
docker load -i flink-cdc-3.2.0.tar
启动命令
docker run -d -p 8081:8081 -v /usr/local/docker/flink/job/:/opt/flink/flink-cdc-3.2.0/job/ --name flink-container alethen/flink-cdc:3.2.0
启动问题修复
Flink报错Could not acquire the minimum required resources.
解决方法是修改配置文件flink-conf.yaml,重新设置任务槽的数量
taskmanager.numberOfTaskSlots(调大点,比如30,50)
作业报错 Mysql8.0 Public Key Retrieval is not allowed
这是因为用户配置的 MySQL 用户 使用的是 sha256 密码认证,需要 TLS 等协议传输密码。一种简单的方法是使允许 MySQL用户 支持原始密码方式访问。
# 赋权命令
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
# 刷新权限
FLUSH PRIVILEGES;
作业报错Connect to 127.0.0.1:8040 [/127.0.0.1] failed: Connection refused (Connection refused)
当使用单例模式部署Doris时,使用命令查询出的be节点Host是127.0.0.1
如果flink部署在其他服务器上,则需要在flink-cdc的读取配置文件中加入benodes地址,否则默认连接的是127.0.0.1:8040,需要手动调整,修改配置如下
Flink通过Nginx接入Doris最小限度接口
Doris正常情况会启动很多端口,用如下命令可以查看Doris开放端口
# 查看前端运行情况
SHOW PROC '/frontends';
# 查看后端运行情况
SHOW PROC '/backends';
Nginx转发Doris接口需要使用Nginx的Stream模块,开放8030、8040、9030、9050端口
stream {upstream doris_front_http {server 192.168.38.132:8030;}upstream doris_front_query {server 192.168.38.132:9030;}upstream doris_back_http {server 192.168.38.132:8040;}upstream doris_back_heartbeat {server 192.168.38.132:9050;}server {listen 8030;proxy_pass doris_front_http;}server {listen 9030;proxy_pass doris_front_query;}server {listen 8040;proxy_pass doris_back_http;}server {listen 9050;proxy_pass doris_back_heartbeat;}
}