当前位置: 首页 > news >正文

05、Doris部署与数据同步指南

Apache Doris 单节点部署 + Flink CDC 实时同步 MySQL 完整指南

一、概述

本文档记录在 Linux 单机环境下部署 Apache Doris 4.0.5,并通过 Flink CDC 实现 MySQL 到 Doris 的全量 + 增量实时同步的完整流程。

适用场景

  • 业务系统使用 MySQL(OLTP),需要将数据实时同步到分析型数据库做复杂统计报表
  • 数据量大(百万级以上)、需要高速聚合查询(COUNT/SUM/GROUP BY/多表 JOIN)
  • 希望保留 MySQL 作为主写库,Doris 作为分析从库

数据流向

MySQL (源库) ↓ binlog Flink CDC (读取并解析 binlog) ↓ Flink Doris Connector (写入) ↓ Apache Doris (OLAP 分析库) ↓ Java 业务系统 (查询)

二、架构说明

Doris 角色

组件职责数量
FE (Frontend)元数据管理、SQL 解析、查询规划、用户认证单节点 1 个
BE (Backend)数据存储(列存)、查询执行、计算引擎单节点 1 个

Flink 角色

组件职责
JobManager任务调度、Checkpoint 协调
TaskManager实际执行同步任务

启停顺序(重要)

启动:FE → BE → Flink

FE 是元数据管理者(master),BE 启动时要向 FE 注册心跳。如果 BE 先启动,会一直重试连 FE,直到 FE 就绪(不会失败,但日志会刷大量 warn)。

关闭:Flink → BE → FE

先停 BE,让正在写入的 tablet 落盘完成,再停 FE,避免「FE 还在但找不到 BE」的中间态。


三、软硬件要求

硬件配置

配置项测试/开发小型生产(推荐)中大型生产
CPU4核8核16核+
内存16G(紧张)32G64G+
数据盘HDD 200GSSD 500GSSD 2TB+
网络100Mbps1Gbps1Gbps+

⚠️16G 内存只能勉强跑测试,生产至少 32G 起步。

内存分配参考

16G 服务器(最低可用):

组件内存
Doris FE2G
Doris BE6G(mem_limit)
Flink TaskManager4G
Flink JobManager1G
业务应用~2G
系统 + 缓存~1G

64G 服务器(推荐生产):

组件内存
Doris FE8G
Doris BE32G
Flink TaskManager8G
Flink JobManager2G
业务应用4G
系统 + 缓存10G

软件版本(已验证可用)

软件版本备注
Apache Doris4.0.5单节点 FE + BE
JDK17 (Temurin)Doris 4.x 强制要求 JDK 17
Apache Flink1.19.2mysql-cdc 3.3.0 要求 1.19+
flink-sql-connector-mysql-cdc3.3.0MySQL CDC 连接器
flink-doris-connector1.19-25.0.0Doris 4.x 必须用此版本
mysql-connector-j8.0.33MySQL JDBC 驱动
操作系统CentOS 7 / RHEL 7需支持 AVX2 指令集
MySQL(源库)5.7 / 8.0必须开启 binlog (ROW 格式)

⚠️版本组合敏感:以上版本组合是经过验证的稳定配合,不要随意降低 Flink 或 mysql-cdc 版本。低版本组合(如 mysql-cdc 3.1/3.2 + doris-connector 24.0.0)有 NullPointerException Bug。


四、端口说明

Doris 端口

端口角色用途是否需要外网
8030FEHTTP(Web UI、REST API、Stream Load 入口)管理需要
9030FEMySQL 协议(客户端连接,类似 MySQL 3306)业务需要
9020FERPC(FE 间通信,单节点用不到)内网
9010FE编辑日志同步(FE 间通信)内网
8040BEHTTP(BE Web UI、Stream Load 实际写入)管理需要
9050BERPC(FE 与 BE 通信)内网
9060BEBRPC(BE 间通信)内网
8060BEHeartbeat(心跳)内网

Flink 端口

端口用途
8081Flink Web UI
6123JobManager RPC
6121-6122TaskManager 数据交换

必须开放的端口

# 防火墙开放(外部访问)firewall-cmd--permanent--add-port=8030/tcp# Doris FE Web UIfirewall-cmd--permanent--add-port=9030/tcp# Doris MySQL 协议firewall-cmd--permanent--add-port=8040/tcp# Doris BE Web UIfirewall-cmd--permanent--add-port=8081/tcp# Flink Web UIfirewall-cmd--reload

五、部署步骤

第一阶段:环境准备

1. 系统配置
# 关闭 swapswapoff-ased-i'/swap/d'/etc/fstab# 关闭防火墙(或按需开放端口)systemctl stop firewalld systemctl disable firewalld# 设置内核参数(BE 必需)sysctl-wvm.max_map_count=2000000echo"vm.max_map_count=2000000">>/etc/sysctl.confsysctl-p

BE 处理大量数据时会创建很多内存映射(mmap),默认值 65530 远远不够,Doris 要求至少 2000000。

2. 安装 JDK 17(CentOS/RHEL)

CentOS 7 默认源没有 JDK 17,使用 Adoptium 源安装:

cat>/etc/yum.repos.d/adoptium.repo<<'EOF' [Adoptium] name=Adoptium baseurl=https://packages.adoptium.net/artifactory/rpm/centos/7/x86_64 enabled=1 gpgcheck=1 gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public EOFyuminstall-ytemurin-17-jdk

如果系统已有多个 Java 版本,切换默认:

alternatives--configjava# 选择 java-17 对应的编号# 验证java-version# 应显示 openjdk version "17.x.x"

设置环境变量(在/etc/profile末尾追加):

exportJAVA_HOME=/usr/lib/jvm/java-17-temurin-jdkexportPATH=$JAVA_HOME/bin:$PATH

执行source /etc/profile生效。

3. 检查 CPU 是否支持 AVX2
grepavx2 /proc/cpuinfo|head-1# 有输出说明支持,Doris 4.x 需要 AVX2

如果不支持 AVX2,需要下载 Doris 的 noavx2 版本。


第二阶段:安装 Doris

1. 下载并解压

从 Doris 官网 下载 4.0.5 版本,解压到/opt/doris/

tar-xzfapache-doris-4.0.5-bin-x64.tar.gz-C/opt/doris/cd/opt/doris/apache-doris-4.0.5-bin-x64
http://www.jsqmd.com/news/722404/

相关文章:

  • 纯RAG就是个“半成品“:FAQ+RAG让大模型客服真正能打
  • 全屏图像与动态元素的完美结合
  • VMware Workstation Pro 17 免费激活终极指南:5000+许可证密钥完整教程
  • Day06-06.实现点赞功能-实现点赞或取消点赞接口24:07
  • 10分钟搞定黑苹果配置:OpCore-Simplify自动化工具终极指南
  • Layerdivider终极指南:一键将单张图片智能分层为可编辑PSD文件
  • 小六壬排盘工具源码 自适应双端 纯原生HTML+JS
  • AArch64处理器特性寄存器解析与应用实践
  • 隐于无形,触手可及:Chrome 互动滚动条的六个设计密码
  • NVIDIA Jetson AGX Thor:边缘AI性能优化与量化技术实战
  • 灭蚊器哪个好用?灭蚊器哪种品牌效果好?口碑爆款灭蚊灯十大名牌,小白精选款!
  • MacOS上使用CoreBluetooth框架的BLE适配器选择指南
  • 本地部署 Qwen2.5-1.5B-Instruct 全流程教程|Ollama + 魔搭双方案
  • 火箭发射极端环境成像:硬件算法协同设计突破
  • Laravel 12新特性×AI工程化落地:从Native JSON Schema Validation到AI生成Migration的全自动闭环(含可复用Composer包)
  • 如何用DyberPet桌面宠物框架重构你的数字生活体验?
  • 状态空间模型与长序列建模:MemMamba的创新与实践
  • 当网络消失时,你的小说图书馆依然存在:fanqienovel-downloader 离线阅读解决方案
  • 2026英文降AI实战教程:5款工具与3大指令,论文AI率95%降至0%
  • IEC 61508标准与FPGA功能安全设计实践
  • 【状态估计】基于辅助不变卡尔曼滤波和LSTM神经网络,建立攻角、侧滑角与飞行器状态参数实现无人机飞行状态估计与控制优化附matlab代码
  • 可重构智能表面技术:从基站到用户侧的演进与挑战
  • MagiskHide Props Config终极指南:轻松绕过Android安全检测的完整解决方案
  • 艾倍生推三返一模式系统源码分析
  • 函数信号发生器和任意波形信号发生器区别详解
  • 【绝密调优清单】R 4.3.3+tidymodels 1.2.0偏见检测栈:11个易忽略的随机种子陷阱、协变量缩放偏差与FDR控制阈值错配点
  • 手把手教你用PE工具绕过Deep Freeze 8.63密码(附完整脚本和注册表清理)
  • 001. MSP430G2553 入门总述:从零开始学习这颗单片机
  • 安捷伦E4402B频谱分析仪E4404B
  • 2026年苏州法兰选购技术推荐:上海,杭州,绍兴苏州304法兰,苏州不锈钢净化风管,苏州不锈钢法兰,优选指南! - 优质品牌商家