FlinkCDC 达梦数据库实时同步详解

发布于:2025-03-18 ⋅ 阅读:(298) ⋅ 点赞:(0)

任务目标

这里任务目标主要是利用 Flink CDC(Change Data Capture,即变更数据捕获)技术,将达梦数据库中的数据实时同步至 MySQL 数据库。Flink 作为一款强大的流处理框架,搭配 CDC 技术能够高效地捕获源数据库的变更并将这些变更实时同步到目标数据库,为数据的实时处理和分析提供了有力支持。逐步部署、配置、测试等环节通过,搭建起从达梦数据库到 MySQL 数据库的实时同步环境。

使用Flink CDC技术,实现达梦数据库(DM8)与MySQL的实时数据同步.
参考文档:FlinkCDC 达梦数据库实时同步_达梦cdc-CSDN博客

这里仅实现在 Linux 系统下部署
如果需要在本地部署可参考官方文档
安装前准备 | 达梦技术文档

本文安装环境如下:

操作系统 CPU 数据库
Ubuntu 2.24 x86_64 架构 dm8_20250122_x86_rh7_64

整体架构流程 

任务起始时间(3.17 - 3.19)

1. Flink 部署与配置:首先要确保 Java 环境正确配置,这是 Flink 运行的基础。接着安装并配置 Flink,包括设置 Flink 的 Java 环境路径、修改 REST 服务地址和端口等。同时,将 Flink CDC 相关的 Jar 包放置到 Flink 安装目录的 lib 文件夹下,以支持 CDC 功能。
(预估完成时间 3.17)

2. 达梦数据库搭建:利用 Docker 快速部署达梦数据库,并对其进行相关配置,如开启日志归档功能,这对于 Flink CDC 捕获达梦数据库的变更数据至关重要。
(预估完成时间 3.18)

3. 实时同步测试:在达梦数据库中创建源表,定义好数据结构和连接配置,用于提供待同步的数据。在 MySQL 数据库中创建目标表,用于接收同步过来的数据。最后,通过 Flink SQL 的 INSERT INTO...SELECT 语句,实现从达梦源表到 MySQL 目标表的数据实时同步。
(预估完成时间 3.19)

技术名词解释

  1. Flink:一个分布式流批一体化开源平台,能对有界和无界数据流进行有状态计算,在实时数据处理领域应用广泛。它具有高吞吐、低延迟、容错性强等特点,为数据实时处理提供了丰富的功能和高效的执行引擎。
  2. Flink CDC:Flink 的变更数据捕获技术,通过监听源数据库的日志或使用特定的数据库 API,能够实时获取数据库的增、删、改操作,并将这些变更数据传输到 Flink 系统中进行后续处理,从而实现数据在不同数据库之间的实时同步。
  3. 达梦数据库:国内知名的数据库管理系统,具有高性能、高可靠、高安全等特性,广泛应用于金融、政府、能源等众多关键领域,在国产化数据库应用中占据重要地位。
  4. MySQL:世界上最流行的开源关系型数据库之一,以其开源、易用、高性能和可扩展性在互联网行业和各类企业级应用中被大量使用。

技术实现

1. Flink 部署细节:(3.17)


1.1 Java 环境配置

Java 是 Flink 运行的基础环境,我们需要配置 Java 的相关路径,让系统能够正确找到 Java 并使用它。

打开系统配置文件 /etc/profile 进行编辑:

vi /etc/profile

在文件中添加以下内容:

export JAVA_HOME=/data/flinkcdc/jdk1.8.0_181
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

上述配置中,JAVA_HOME 指向 Java 的安装目录,CLASSPATH 包含了 Java 运行所需的工具和类库,PATH 把 Java 的可执行文件路径添加到系统路径。
保存并退出文件后,让配置立即生效:

source /etc/profile
  • 接着,编辑用户个人的配置文件 ~/.bash_profile
vi ~/.bash_profile

添加如下内容:

export FLINK_HOME=/data/flinkcdc/flink-1.17.0
export PATH=$PATH:$FLINK_HOME/bin

 

这里设置了 Flink 的安装路径,并将其可执行文件路径添加到系统路径。保存退出后,使配置生效.


1.2Flink 安装:

前提条件

在安装 Flink 之前,需要确保系统已经安装了 Java 环境,因为 Flink 是基于 Java 开发的。建议使用 Java 8 或更高版本。你可以通过以下命令检查 Java 版本:

java -version

如果没有安装 Java,你需要先安装 Java 并配置好环境变量。

步骤 1:下载 Flink

1. 你可以从 Flink 官方网站(https://flink.apache.org/downloads.html )下载适合你需求的 Flink 版本。这里以 Flink 1.17.0 为例,使用以下命令下载:

wget https://archive.apache.org/dist/flink/flink-1.17.0/flink-1.17.0-bin-scala_2.12.tgz

 这里可以直接用 wget 通过 url 去下载,但是由于网络原因,可能较慢,所以建议采用另一种方式

2. 先进行本地下载,在传输到服务器上。

访问网址: Index of /dist/flink/flink-1.17.0https://archive.apache.org/dist/flink/flink-1.17.0/

 成功下载到本地之后有三种方式去实现从本地进行文件传输到服务器

Xshell 直接拖拽(需结合 Xftp)

  • 操作:在 Xshell 已连接服务器的前提下,通过 “工具”-“新建 Xftp 选项卡” 开启关联。从本地资源管理器将安装包直接拖到 Xftp 窗口的服务器目标目录。
  • 优势:操作简单便捷。
  • 劣势:依赖 Xshell 和 Xftp 软件集成环境,若未安装或软件异常则无法使用。

Xftp 传输

  • 操作:打开 Xftp,新建会话连接服务器,设置好传输模式(建议二进制传安装包),从本地选中安装包拖到服务器目标目录。
  • 优势:专业的文件传输工具,支持断点续传,对文件传输的控制更精细。
  • 劣势:需单独启动软件,对于仅需简单传输文件的场景稍显繁琐。

scp 指令传输

  • 操作:在本地终端使用 scp -P [端口号] 本地文件路径 用户名@服务器IP:服务器目标路径 格式的命令
    scp /Users/yourusername/Downloads/flink - 1.17.0 - bin - scala_2.12.tgz yourusername@192.168.33.231:/data/
  • 优势:无需额外图形化软件,纯命令行操作,在各类系统下通用性强,适合熟练掌握命令的用户快速传输 。
  • 劣势:命令格式相对复杂,不太友好,若命令参数错误可能导致传输失败 。

注意:如果您使用的是 Windows 系统,需要先安装支持 scp 命令的工具,如 OpenSSH(可通过安装 Git 来获得,安装 Git 时选择安装 OpenSSH 组件)。如果是 macOS 或 Linux 系统,系统默认自带 scp 命令

步骤 2:解压文件

使用以下命令解压下载的压缩包:

tar -xzf flink-1.17.0-bin-scala_2.12.tgz

解压完成后,你会得到一个名为 flink-1.17.0 的目录,这就是 Flink 的安装目录。

步骤 3:配置 Java 环境

Flink 需要知道 Java 的安装路径,你可以通过编辑 conf/flink-conf.yaml 文件来指定 Java 环境。打开该文件:

vim conf/flink-conf.yaml

在文件中添加或修改以下配置:

env.java.home: /path/to/your/java/home

将 /path/to/your/java/home 替换为你实际的 Java 安装路径,例如 /usr/lib/jvm/java-8-openjdk-amd64

步骤 4:配置 Flink 服务地址和端口

修改 conf/flink-conf.yaml 文件中的相关配置。找到并修改以下两行:

rest.port: 8088
rest.address: 192.168.33.231
  • rest.port:指定 Flink Web UI 的访问端口,这里设置为 8088。
  • rest.address:指定 Flink 服务的访问地址,将其替换为你实际的服务器 IP 地址。

步骤 5:配置防火墙(可选)

如果你的服务器开启了防火墙,需要确保防火墙允许访问 Flink 的 Web UI 端口(默认是 8088)。你可以使用以下命令开放端口:

# 对于 CentOS/RHEL 系统
sudo firewall-cmd --zone=public --add-port=8088/tcp --permanent
sudo firewall-cmd --reload

# 对于 Ubuntu/Debian 系统
sudo ufw allow 8088/tcp


1.3 引入 Flink CDC Jar 包

Flink CDC 连接达梦数据库需要特定的 Jar 包,如flink - cdc - connector - dm相关的 Jar 包,以及达梦数据库的 JDBC 驱动 Jar 包。将这些 Jar 包正确放置到 Flink 的 lib 目录下,Flink 才能识别并使用它们进行达梦数据库的连接和数据捕获。


1.4、启动flink

进入 Flink 安装目录,使用以下命令启动 Flink 集群:

./bin/start-cluster.sh

 

启动成功后,你可以通过浏览器访问 http://123.60.59.40:8088(这里要改成你自己的ip) 来查看 Flink 的 Web UI,确认 Flink 是否正常运行。(这里暂且没访问到)

1.5、启动 Flink SQL CLI

进入 Flink 安装目录

bin/sql-client.sh

就会出现如下响应

可能报错 

可能一直没响应,一直卡死,多次重试,隔段时间再重试,总会出现的。


2. 达梦数据库配置细节:(3.18)

目标

达梦数据库安装与配置有两种方式

第一种:通过Docker部署DM8,开启归档日志支持CDC。

第二种:本地安装达梦数据库文件传输到 Linux 服务器

具体步骤

1. 通过 Docker安装与镜像准备

安装Docker(若未安装)执行下述命令

yum install docker -y && systemctl start docker

拉取达梦镜像(如dm8_flinkcdc:dm8)或使用官方镜像。

docker pull dm8_flinkcdc:dm8

注意点:镜像是否包含CDC所需配置?

docker pull是 Docker 用于从镜像仓库拉取镜像的命令。dm8_flinkcdc:dm8是要拉取的镜像名称和标签。其中dm8_flinkcdc是镜像名称,dm8是标签,标签通常用于区分同一镜像的不同版本或配置。这里拉取的是专门为 Flink CDC(变更数据捕获)场景定制的达梦 8 数据库镜像。

 可能报错:

当你在在拉取 Docker 镜像时,由于网络连接问题导致请求超时;

1. 检查网络连接

  • 确保你的服务器能够正常访问互联网。可以尝试使用 ping 命令来测试网络连通性,例如 ping google.com 或 ping docker.io
  • 如果服务器通过代理服务器访问互联网,确保代理设置正确。你可以通过设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量来配置代理。例如:
export HTTP_PROXY=http://your-proxy-server:port
export HTTPS_PROXY=http://your-proxy-server:port

 2. 检查 Docker 服务状态

  • 确保 Docker 服务正在运行且状态正常。你可以使用以下命令检查 Docker 服务状态:
sudo systemctl status docker
  • 如果服务未运行,可以使用以下命令启动 Docker 服务:
sudo systemctl start docker

保证 Docker 是 running 状态 

3. 增加 Docker 拉取超时时间

(格式不正确可能会导致docker宕机甚至导致服务器卡死,请谨慎,如果宕机其他操作都没用,最好的解决办法就是重启服务器。)

  • 如果检查网络没有问题,可以从 Docker 入手,Docker 默认的拉取超时时间可能较短,你可以尝试增加超时时间。在 Docker 配置文件(通常是 /etc/docker/daemon.json)中添加或修改 options 字段,例如:
{
  "options": [
    "--default-timeout=600"
  ]
}

然后重启 Docker 服务:

sudo systemctl restart docker

4. 更换 Docker 镜像源

  • Docker Hub 的默认镜像源可能由于网络原因导致拉取缓慢或超时。你可以更换为国内的镜像源,如阿里云镜像源,网易镜像源,腾讯云等等。
  • 编辑 Docker 配置文件 /etc/docker/daemon.json,添加以下内容:
{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://dockerhub.azk8s.cn",
    "https://mirror.ccs.tencentyun.com",
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.1panel.live",
    "https://atomhub.openatom.cn/",
    "https://hub.uuuadc.top",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.ckyl.me",
    "https://docker.awsl9527.cn"
  ]
}
  • 将 https://your-mirror-url 替换为你选择的镜像源地址,例如阿里云的镜像源地址。
  • 保存文件后,重启 Docker 服务:
sudo systemctl restart docker

5. 检查系统防火墙和安全组设置

  • 问题描述‌:

    • 防火墙或安全组规则可能阻止了 Docker 客户端访问外部网络。
  • 解决步骤‌:

    • 检查服务器的防火墙设置,确保出站流量到 Docker Hub 的端口(通常是 443)是开放的。
    • 如果服务器在云环境中(如 AWS、Azure、GCP),检查安全组或网络访问控制列表(ACL)设置。

  启动达梦容器

docker run -d \
--name dm8 \
-p 5236:5236 \
-v /docker/dm8_data_cdc:/opt/dmdbms/data \
-e SYSDBA_PWD=SYSDBA001 \
dm8_flinkcdc:dm8
  • 注意点:数据卷/docker/dm8_data_cdc权限是否正确?


2. 通过本体安装达梦数据库安装包传输(Windows → Linux服务器)

一、安装包下载与传输步骤

1. ‌下载达梦数据库Linux版安装包

这里选择 RHEL 7(r7)的安装包
原因解释‌:

达梦数据库的Linux安装包通常以 ‌RHEL(Red Hat Enterprise Linux)‌ 版本标识(如r6、r7),而非直接支持Ubuntu。但Ubuntu与RHEL/CentOS同属Linux分支,内核兼容性较高,这里选择 r7

  

2. ‌使用SCP/SFTP传输工具(Windows端操作) ‌传输安装包到Linux服务器

之前在Flick 引入 Flink CDC Jar 包的时候讲过三个传输文件的方式,这里就不再赘述,不明白可以翻上去看看。

将下载的达梦安装包(如 dm8_20230418_x86_rh7_64.zip)从左侧拖拽到右侧的服务器目录(如 /home)‌。


二、Linux服务器端安装步骤
1. ‌前置准备
#1. 创建专用用户和组(必须步骤,否则安装报错)
sudo groupadd dinstall
sudo useradd -g dinstall -m -s /bin/bash dmdba
sudo passwd dmdba  # 设置密码(如 Dameng123)

 

#2.  安装依赖库(避免安装过程中断)
sudo apt update
sudo apt install -y libaio1 libncurses5 p7zip-full

#3. 修改文件打开最大数
vi /ect/security/limits.conf

#在最后面添加四条语句
dmdba hart nofile 65536
dmdba soft nofile 65536
dmdba hart stack 32768
dndba soft stack 16384
#挂载镜像
mount -o loop /path/to/dm8.iso /mnt
2. ‌解压安装包
cd /home  # 进入实际安装包所在目录

# 解压 ZIP 安装包(文件名需与实际一致)
unzip dm8_20250122_x86_rh7_64.zip

# 解压 ISO 到可写目录(避免挂载后只读权限问题)
sudo mkdir -p /opt/dm_install
sudo chown dmdba:dinstal /opt/dm_install  # 赋权给 dmdba 用户
7z x dm8_20250122_x86_rh7_64.iso -o/opt/dm_install

 

如果在这过程中报错,请重新解压安装包 

3. ‌(1)图形化安装 ‌
# 赋予安装脚本可执行权限
cd /opt/dm_install
sudo chmod +x DMInstall.bin

# 切换至 dmdba 用户执行安装
su - dmdba
cd /opt/dm_install
./DMInstall.bin  # 图形界面安装(需 GUI 支持)

 可能报错:

报错分析:

由于在 无图形界面的 Linux 服务器 上尝试运行图形化安装程序导致的。达梦数据库(DM)的 DMInstall.bin 默认使用图形界面安装,但你的服务器环境不支持 GUI,需要改用 命令行方式

  1. 无图形界面环境:ECS 服务器通常为纯命令行环境,未安装图形界面(如 GNOME/KDE)和 Java GUI 依赖库。
  2. SWT 库依赖缺失DMInstall.bin 基于 Java SWT 开发,依赖 GTK+X11 等图形库,而服务器未安装这些库。

4. ‌(2)静默安装
1. 配置文件自动安装(推荐⭐)

1. 准备工作

  • 确保 ISO 镜像挂载:若使用 ISO 镜像安装,需先将其挂载到指定目录,例如:
mount -o loop /path/to/dm8.iso /mnt
  • 创建配置文件:依据达梦数据库的安装需求,创建一个符合要求的 XML 配置文件,比如 /home/dmdba/auto_install.xml。示例配置文件内容如下:
<?xml version="1.0"?>
<DATABASE>
    <!-- 安装语言 -->
	<LANGUAGE>EN</LANGUAGE>
	<!--安装程序的时区配置,缺省为+08:00,取值范围:-12:59 ~ +14:00 -->
	<TIME_ZONE>+08:00</TIME_ZONE>
	<!-- key文件,试用可不填-->
	<KEY></KEY>
	<!-- 安装程序组件类型,取值范围:0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。缺省为0。 -->
	<INSTALL_TYPE>0</INSTALL_TYPE>
	<!-- 安装目录 -->
	<INSTALL_PATH>/dm8_1</INSTALL_PATH>
	<!-- 是否初始化库,取值范围:Y/N、y/n,不允许为空。 -->
	<INIT_DB>y</INIT_DB>
	<!--数据库实例参数 -->
	<DB_PARAMS>
	    <!--初始数据库存放的路径,不允许为空 -->
		<PATH>/dm8_1/data</PATH>
		<!--初始化数据库名字,缺省为DAMENG,不超过128个字符 -->
		<DB_NAME>DMOA</DB_NAME>
		<!--初始化数据库实例名字,缺省为DMSERVER,不超过128个字符 -->
		<INSTANCE_NAME>DMOA</INSTANCE_NAME>
		<!--初始化时设置dm.ini中的PORT_NUM,缺省为5236,取值范围:1024~65534 -->
		<PORT_NUM>5233</PORT_NUM>
		<CTL_PATH></CTL_PATH>
		<LOG_PATHS>
			<LOG_PATH></LOG_PATH>
		</LOG_PATHS>
		<!--数据文件使用的簇大小,取值范围:16页、32页,缺省为16页 -->
		<EXTENT_SIZE>16</EXTENT_SIZE>
		<!--数据文件使用的页大小,取值范围:4K、8K、16K、32K,缺省为8K -->
		<PAGE_SIZE>16</PAGE_SIZE>
		<!--日志文件使用的簇大小,缺省为256,取值范围为64~2048之间的整数 -->
		<LOG_SIZE>256</LOG_SIZE>
		<!--标识符大小写敏感。取值范围:Y/N y/n 1/0,缺省为Y -->
		<CASE_SENSITIVE>Y</CASE_SENSITIVE>
		<!--字符集选项,缺省为0。0代表GB18030,1代表UTF-8,2代表韩文字符集EUC-KR -->
		<CHARSET>0</CHARSET>
		<!—规定VARCHAR对象长度的单位。取值范围:0,1。1:所有VARCHAR类型对象的长度以字符为单位;0:有VARCHAR类型对象的长度以字节为单位。缺省为0。 -->
		<LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
		<USE_NEW_HASH>1</USE_NEW_HASH>
		<!--初始化时设置SYSDBA的密码,缺省为SYSDBA,长度在9到48个字符之间 -->
		<SYSDBA_PWD></SYSDBA_PWD>
		<SYSAUDITOR_PWD></SYSAUDITOR_PWD>
		<SYSSSO_PWD></SYSSSO_PWD>
		<SYSDBO_PWD></SYSDBO_PWD>
		<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,取值范围:-12:59 ~ +14:00 -->
		<TIME_ZONE>+08:00</TIME_ZONE>
		<PAGE_CHECK>0</PAGE_CHECK>
		<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
		<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
		<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
		<ENCRYPT_NAME></ENCRYPT_NAME>
		<USBKEY_PIN></USBKEY_PIN>
		<BLANK_PAD_MODE>0</BLANK_PAD_MODE>
		<SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
		<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
		<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
		<PRIV_FLAG>0</PRIV_FLAG>
		<ELOG_PATH></ELOG_PATH>
	</DB_PARAMS>
	<!--是否创建数据库实例的服务,取值范围: Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非root用户不能创建数据库服务。 -->
	<CREATE_DB_SERVICE>Y</CREATE_DB_SERVICE>
	<!--是否启动数据库,取值范围: Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
	<STARTUP_DB_SERVICE>y</STARTUP_DB_SERVICE>
</DATABASE>

注意:

  • 要把 YourPassword123 替换成实际的系统管理员密码。
  • 依据实际需求调整其他参数。

2. 检查配置文件

  • 确认文件存在:使用 ls 命令确认配置文件是否存在,例如:
ls /home/dmdba/auto_install.xml
  • 检查文件权限:确保当前用户(通常是 root)对配置文件有读取权限,若权限不足,可使用 chmod 命令修改权限,如:
chmod +r /home/dmdba/auto_install.xml
  • 验证文件格式:保证 XML 文件格式正确,无未转义的特殊字符、不完整的标签等问题。可使用在线 XML 验证工具进行验证。

3. 执行静默安装

进入包含 DMInstall.bin 安装程序的目录(例如 /mnt),执行以下命令开始静默安装:

./DMInstall.bin -q /home/dmdba/auto_install.xml

参数说明:

  • -q:表示以静默模式运行安装程序。
  • /home/dmdba/auto_install.xml:指定配置文件的路径。

 

4. 处理可能出现的错误

  • 配置文件路径问题:若提示配置文件路径不存在,需确认文件是否确实存在于指定路径,检查路径是否有拼写错误,同时确保有足够的权限访问该文件。
  • 文件解析错误:若提示解析配置文件失败,要检查文件格式是否正确,特殊字符是否转义,标签是否完整闭合等。
  • 参数值为空问题:若提示某个参数值不能为空,如 SYSDBA_PWD,需在配置文件中为该参数设置有效的值。

2.通过应答文件安装(不推荐)
sudo tee /opt/dm_install/dm_install.rsp <<EOF
[INSTALL]
#LICENSE_KEY=YOUR_LICENSE_KEY       # 授权码(试用版本留空或者删除),这里删除
INSTALL_LANGUAGE=en_US            # 安装语言(en_US/zh_CN)
INSTALL_TYPE=0                    # 安装类型:0-典型 1-服务器 2-客户端 3-自定义
INSTALL_PATH=/opt/dmdbms          # 安装路径
SELECTED_LANGUAGES=en_US          # 选择语言
TIME_ZONE=+8                     # 时区
DIRECTORY=dmdbms                  # 目录名(可选)
AUTO_OVERWRITE=1                  # 自动覆盖已存在目录
EOF

# 执行静默安装(无需图形界面)
cd /opt/dm_install
sudo ./DMInstall.bin -q /opt/dm_install/dm_install.yaml

可能报错: 

 

问题排查与解决方案

您已按照建议操作,但依然遇到 Content is not allowed in prolog 错误,表明配置文件的 ‌头部存在非法内容‌(如隐藏字符或格式错误)。以下是详细排查步骤:

1. 检查应答文件头部隐藏字符

使用 hexdump 查看文件头部内容:

hexdump -C /opt/dm_install/dm_install.rsp | head -n 5
  • 正常情况‌:首行应为 [INSTALL] 的 ASCII 编码(无 BOM 头)。
  • 异常情况‌:若首行包含 EF BB BF(UTF-8 BOM 头)或其他乱码,需清除:
    # 删除 BOM 头 sudo sed -i '1s/^\xEF\xBB\xBF//' /opt/dm_install/dm_install.rsp

2. 验证应答文件格式

确保内容严格符合以下格式(注意无空行和参数对齐):

# 输入以下内容(严格逐行对齐):
[INSTALL]
LICENSE_KEY=
INSTALL_LANGUAGE=en_US
INSTALL_TYPE=0
INSTALL_PATH=/opt/dmdbms
SELECTED_LANGUAGES=en_US
TIME_ZONE=+8
DIRECTORY=dmdbms
AUTO_OVERWRITE=1

关键点‌:

  • 首行必须为 [INSTALL]‌,不能有空行或空格。
  • 参数值不可有空格‌(如 TIME_ZONE=+8 而非 TIME_ZONE= +8)。
  • 参数名必须与文档完全一致‌(区分大小写)。

3. 手动输入配置文件(避免复制粘贴)

复制粘贴可能引入不可见符号,建议手动输入:

sudo rm -f /opt/dm_install/dm_install.rsp sudo nano /opt/dm_install/dm_install.rsp # 手动逐行输入内容

4. 检查安装程序完整性

安装包可能损坏,验证文件 MD5:

md5sum DMInstall.bin

与达梦官网提供的 MD5 值对比,若不一致需重新下载。

5. 查看安装日志

达梦安装日志通常位于临时目录或安装路径下:

tail -f /tmp/DMInstall/install.log # 实时跟踪日志

根据日志中的具体错误提示调整配置。


操作示例

# 清空旧配置
sudo rm -f /opt/dm_install/dm_install.rsp

# 手动创建配置文件(确保无隐藏字符)
sudo nano /opt/dm_install/dm_install.rsp
# 输入以下内容(严格逐行对齐):
[INSTALL]
LICENSE_KEY=
INSTALL_LANGUAGE=en_US
INSTALL_TYPE=0
INSTALL_PATH=/opt/dmdbms
SELECTED_LANGUAGES=en_US
TIME_ZONE=+8
DIRECTORY=dmdbms
AUTO_OVERWRITE=1

# 检查文件头部
hexdump -C /opt/dm_install/dm_install.rsp | head -n 2

# 执行安装
cd /opt/dm_install
sudo ./DMInstall.bin -q /opt/dm_install/dm_install.rsp

附加说明

  • 依赖库检查‌:
    确保系统已安装基础依赖:

    sudo apt-get install -y libaio1 numactl

  • 安装路径权限‌:
    若 /opt/dmdbms 不存在,提前创建并授权:

    sudo mkdir -p /opt/dmdbms sudo chown -R $(whoami):$(whoami) /opt/dmdbms

# 清空旧配置
sudo rm -f /opt/dm_install/dm_install.rsp

# 手动创建配置文件(确保无隐藏字符)
sudo nano /opt/dm_install/dm_install.rsp
# 输入以下内容(严格逐行对齐):
[INSTALL]
LICENSE_KEY=
INSTALL_LANGUAGE=en_US
INSTALL_TYPE=0
INSTALL_PATH=/opt/dmdbms
SELECTED_LANGUAGES=en_US
TIME_ZONE=+8
DIRECTORY=dmdbms
AUTO_OVERWRITE=1

# 检查文件头部
hexdump -C /opt/dm_install/dm_install.rsp | head -n 2

# 执行安装
cd /opt/dm_install
sudo ./DMInstall.bin -q /opt/dm_install/dm_install.rsp

3. 开启归档日志

  1. 进入容器:docker exec -it dm8 bash

  2. 修改dm.ini:设置ARCH_INI=1

  3. 创建dmarch.ini,配置归档路径和策略。

  4. 重启容器:docker restart dm8

  5. 验证:执行SQL SELECT arch_mode FROM v$database;返回Y

4. 创建测试表

CREATE TABLE SYSDBA.dm_flinkcdc (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  insert_date DATE
);

3. 实时同步测试细节:(3.19)

目标:通过Flink SQL将达梦数据同步到MySQL。

具体步骤
  1. MySQL环境准备

    • 安装MySQL,创建数据库flinkcdc和表dm_to_mysql

    • 确保用户root有远程访问权限。

  2. Flink SQL作业配置

    • 达梦源表定义

      CREATE TABLE t_source_dm (...)
      WITH (
        'connector' = 'dm',
        'hostname' = '192.168.33.231',
        'port' = '5236',
        'username' = 'SYSDBA',
        'password' = 'SYSDBA001',
        'table' = 'dm_flinkcdc'
      );
    • MySQL目标表定义

      CREATE TABLE sink_mysql_test (...)
      WITH (
        'connector' = 'jdbc',
        'url' = 'jdbc:mysql://192.168.33.231:3306/flinkcdc',
        'table-name' = 'dm_to_mysql'
      );
    • 注意点:检查MySQL驱动是否在Flink的lib/目录下(如mysql-connector-java-8.0.28.jar)。

  3. 启动同步任务

    INSERT INTO sink_mysql_test SELECT * FROM t_source_dm;
    • 验证:在达梦插入数据,观察MySQL是否同步。

常见问题及解决
  • Flink启动失败:检查JDK路径、端口冲突、防火墙。

  • 达梦连接超时:确认容器端口映射和网络策略。

  • CDC无数据:检查归档配置,确认表有更新操作。

  • MySQL同步失败:检查JDBC连接参数和驱动版本。

小结


网站公告

今日签到

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