An open API service indexing awesome lists of open source software.

https://github.com/devlive-community/dameng-connector

Dameng Connector 是一个专门为达梦数据库(DM Database)设计的变更数据捕获(CDC)解决方案。该项目通过扩展 Debezium 和 Flink CDC,实现了对达梦数据库的实时数据变更监控、捕获和处理能力,为数据集成、数据同步、实时分析等场景提供强大支持。
https://github.com/devlive-community/dameng-connector

cdc dameng dameng-exporter dameng8 debezium debezium-connector flink flink-cdc flink-connector

Last synced: 6 months ago
JSON representation

Dameng Connector 是一个专门为达梦数据库(DM Database)设计的变更数据捕获(CDC)解决方案。该项目通过扩展 Debezium 和 Flink CDC,实现了对达梦数据库的实时数据变更监控、捕获和处理能力,为数据集成、数据同步、实时分析等场景提供强大支持。

Awesome Lists containing this project

README

          

# Dameng Connector

基于 Debezium 和 Flink CDC 的达梦数据库变更数据捕获解决方案

## 项目简介

Dameng Connector 是一个专门为达梦数据库(DM Database)设计的变更数据捕获(CDC)解决方案。该项目通过扩展 Debezium 和 Flink CDC,实现了对达梦数据库的实时数据变更监控、捕获和处理能力,为数据集成、数据同步、实时分析等场景提供强大支持。

## 快速开始

### 前置条件

- Java 8+
- 达梦数据库 8.x+
- Maven 3.6+

### 安装配置

1. **克隆仓库**

```bash
git clone https://github.com/yourusername/dameng-connector.git
cd dameng-connector
```

2. **编译项目**

```bash
./mvnw clean package -DskipTests
```

### 使用示例

#### 1. 独立模式运行 Debezium

```bash
# 启动 Debezium 独立服务器
debezium-server/run.sh

# 注册达梦连接器
curl -X POST -H "Content-Type: application/json" --data @dm-connector.json http://localhost:8083/connectors
```

## 配置选项

### Debezium 连接器配置

| 选项 | 描述 | 默认值 | 必填 |
|----------------------|----------|--------------------------------------|----|
| connector.class | 连接器类名 | io.debezium.connector.dm.DMConnector | 是 |
| database.hostname | 达梦数据库主机名 | - | 是 |
| database.port | 达梦数据库端口号 | 5236 | 是 |
| database.user | 数据库用户名 | - | 是 |
| database.password | 数据库密码 | - | 是 |
| database.dbname | 数据库名称 | - | 是 |
| database.server.name | 连接器唯一名称 | - | 是 |
| table.include.list | 需要捕获的表列表 | - | 否 |
| snapshot.mode | 快照模式 | initial | 否 |
| transforms | 转换配置 | - | 否 |

## 版本兼容性

| 本项目版本 | Debezium 版本 | 达梦数据库版本 |
|----------|-------------|---------|
| 2025.1.0 | 1.9.x | 8.x |

## 贡献指南

我们非常欢迎社区贡献!如果您想参与项目开发,请遵循以下步骤:

1. Fork 本仓库
2. 创建您的特性分支 (`git checkout -b feature/amazing-feature`)
3. 提交您的更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 开启一个 Pull Request

## 许可证

本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。

## 联系方式

- 项目维护者:您的姓名
- 电子邮件:support@devlive.org
- 项目问题跟踪:[GitHub Issues](https://github.com/devlive-community/dameng-connector/issues)

---

# 达梦数据库 CDC 配置指南

本文档介绍如何为达梦数据库配置变更数据捕获(CDC)功能,以便与 Debezium 等工具集成。

## 1. 准备测试环境

首先,需要创建测试数据库和表,并插入一些测试数据:

```sql
-- 测试数据库
CREATE SCHEMA TEST;

-- 测试数据表
CREATE TABLE "TEST"."T00003"
(
"ID" NUMBER PRIMARY KEY,
"NAME" VARCHAR(8188),
"AGE" NUMBER
);

-- 测试数据
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (1, '张三', 25);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (2, '李四', 30);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (3, '王五', 28);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (4, '赵六', 35);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (5, '钱七', 22);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (6, '孙八', 40);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (7, '周九', 29);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (8, '吴十', 31);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (9, '刘十一', 27);
INSERT INTO "TEST"."T00003" ("ID", "NAME", "AGE") VALUES (10, '陈十二', 33);
```

## 2. 配置兼容模式

需要开启兼容模式,以确保 CDC 功能正常工作:

```sql
-- 开启兼容模式,需要重启服务器,或者修改 dm.ini
SP_SET_PARA_VALUE(2,'compatible_mode',2);
SELECT para_name,para_type,para_value FROM V$DM_INI WHERE PARA_NAME = 'COMPATIBLE_MODE';
```

**注意**:修改兼容模式后,需要重启数据库服务才能生效。您也可以直接在 dm.ini 文件中修改配置项。

## 3. 开启归档日志

CDC 功能依赖于数据库的归档日志模式:

```sql
-- 开启归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST = /data/dameng/data/DAMENG/archivelog, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
ALTER DATABASE OPEN;
```

## 4. 开启闪回功能

配置闪回功能以支持 CDC 操作:

```sql
-- 设置回闪
SP_SET_PARA_VALUE(1,'ENABLE_FLASHBACK',1);
SELECT para_name,para_value FROM V$DM_INI WHERE PARA_NAME ='ENABLE_FLASHBACK';
```

## 5. 开启日志追加模式(关键步骤)

**重要**:此步骤是确保 CDC 正常工作的关键,如果不配置,`V$LOGMNR_CONTENTS` 视图可能始终为空,导致无法捕获数据变更。

```sql
-- 注意:这里一定要处理,设置为 1 否则 V$LOGMNR_CONTENTS 一直是 0 导致获取不到数据
-- 开启日志追加:修改 dm.ini 配置项 RLOG_APPEND_LOGIC=1 重启服务

-- 查询是否是追加模式
SELECT para_name, para_value FROM v$dm_ini WHERE para_name = 'RLOG_APPEND_LOGIC';
```

您需要直接修改 dm.ini 配置文件,添加或修改以下配置项:

```
RLOG_APPEND_LOGIC=1
```

**注意**:修改 dm.ini 后需要重启数据库服务才能生效。

## 6. 数据库服务启动

使用后台方式启动数据库服务(生产环境推荐):

```bash
nohup ./dmserver /data/dameng/data/DAMENG/dm.ini > /path/to/logfile.log 2>&1 &
```

启动后,可以通过以下命令确认进程是否在运行:

```bash
ps -ef | grep dmserver
```

## 7. 验证配置

完成上述配置后,您可以尝试在表中插入新数据,然后观察 Debezium 连接器的日志。如果配置正确,应该能够在日志中看到类似以下内容的输出:

```
[debezium-damengconnector-my-dameng-connector-2025-0226-change-event-source-coordinator] INFO io.debezium.connector.dameng.logminer.LogMinerQueryResultProcessor - 1 Rows, 0 DMLs, 0 Commits, 0 Rollbacks, 0 Inserts, 0 Updates, 0 Deletes. Processed in 0 millis. Lag:0. Offset scn:50684. Offset commit scn:null. Active transactions:0. Sleep time:3000
```

如果看到 `0 Rows` 的输出,请检查是否正确配置了所有步骤,特别是日志追加模式设置。

## 8. 常见问题排查

如果遇到问题,可以检查以下几点:

1. 确认兼容模式设置为 2
2. 确认数据库处于归档日志模式
3. 确认闪回功能已开启
4. 确认 RLOG_APPEND_LOGIC 设置为 1
5. 确认所有需要重启服务的配置都已生效

*备注:本项目不是达梦数据库官方项目,由社区维护和开发。*