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 → FlinkFE 是元数据管理者(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 FE2GDoris BE6G(mem_limit)Flink TaskManager4GFlink JobManager1G业务应用~2G系统 + 缓存~1G64G 服务器(推荐生产):组件内存Doris FE8GDoris BE32GFlink TaskManager8GFlink JobManager2G业务应用4G系统 + 缓存10G软件版本(已验证可用)软件版本备注Apache Doris4.0.5单节点 FE + BEJDK17 (Temurin)Doris 4.x 强制要求 JDK 17Apache 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 UI6123JobManager RPC6121-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-pBE 处理大量数据时会创建很多内存映射(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 是否支持 AVX2grepavx2 /proc/cpuinfo|head-1# 有输出说明支持,Doris 4.x 需要 AVX2如果不支持 AVX2,需要下载 Doris 的 noavx2 版本。第二阶段:安装 Doris1. 下载并解压从 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