使用Debezium进行数据库之间的数据同步

使用Debezium进行数据库之间的数据同步

零、快速开始

首先以内嵌Debezium Engine + Docker里面的mysql作为快速上手案例

官网参考文档:https://debezium.io/documentation/reference/2.6/development/engine.html

总重要的注意点:需要在pom.xml中控制版本上面的文档中${version.debezium}版本过高会无法启动,亲测 2.2.1.Final 可以正常启动

  1. 启动一个docker中的mysql,在里面随便创建一个数据库添加点数据
1
2
# docker pull mysql:8.0.18
# docker run -itd --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.18
  1. 按照官网参考文档编写程序
  2. 改动数据库里面的数据,程序的控制台会输出变更的记录
  3. 输出内容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
"schema": {......这里省略表结构相关内容},
"payload": {
"before": {
"post_id": 729,
"user_name": "123",
"avatar": "123",
"parent_id": 123,
"title": "123",
"post_type": "0",
"content": "123",
"image": "123",
"solved": "0",
"create_time": 1711965865000,
"update_time": 1711965865000
},
"after": {
"post_id": 729,
"user_name": "123",
"avatar": "222",
"parent_id": 123,
"title": "123",
"post_type": "0",
"content": "123",
"image": "123",
"solved": "0",
"create_time": 1711965865000,
"update_time": 1711965865000
},
"source": {......这里省略连接器相关信息},
"op": "u",
"ts_ms": 1712565953066,
"transaction": null
}
}

一、前置准备

1
2
3
4
5
6
7
8
9
10
11
12
# 参考上面的文章,在容器中的sqlplus中运行以下命令将会创建新的sid
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile NO_VALUE \
-gdbname ORCLPDB1 -sid ORCLCDB \
-sysPassword oraclepw -systemPassword oraclepw \
-datafileDestination '/u01/app/oracle/oradata' \
-recoveryAreaDestination '/u01/app/oracle/flash_recovery_area' \
-storageType FS \
-characterset AL32UTF8 -nationalCharacterSet AL16UTF16 \
-sampleSchema true \
-totalMemory 300 \
-databaseType OLTP \
-emConfiguration NONE

使用Debezium进行数据库之间的数据同步
http://blog.jingxiang.ltd/2024/04/17/Debezium数据抓取学习/
作者
yemangran
发布于
2024年4月17日
许可协议