debezium source端同步海量数据库数据vastbase到kafka

debezium source端同步海量数据库数据vastbase到kafka

本文用于debezium source端同步海量vastbase数据库的数据到kafka,sink端同理。

 

Image




1、基础环境安装


 

1、kafka

2、zookeeper

3、海量数据库vastbase

 

自行安装并配置基础环境。

海量数据库的安装文档:

 

https://docs.vastdata.com.cn/zh/docs/VastbaseG100Ver2.2.15/doc/%E5%AE%89%E8%A3%85%E5%8D%87%E7%BA%A7%E6%8C%87%E5%8D%97/%E5%8D%95%E6%9C%BA%E5%AE%89%E8%A3%85/%E5%AE%9E%E4%BE%8B%E5%8C%96%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%89%E8%A3%85.html

Image

 


2、修改海量数据库的配置



1、修改postgresql.confvim /home/vastbase/data/vastbase/postgresql.conf

wal_level = hot_standby 改成 wal_level=logical

 

2、修改pg_hba.conf

vim /home/vastbase/data/vastbase/pg_hba.conf (是控制主机访问的)

最后一行加上: host replication all 0.0.0.0/0 md5

再启动:vb_ctl start

 

3、控制台执行:

SELECT*FROM pg_create_logical_replication_slot('vastbase_slot', 'pgoutput');

CREATE PUBLICATION dbz_publication FORALLTABLES;

 

查看系统slot视图:select * from pg_replication_slots ;

其中:vastbase_slot字段 为自定义,后续配置需要



3、下载并编译debezium


下载地址:

https://gitee.com/opengauss/debezium

 

注:

1、需要JDK11、Apache Maven 3.6.3 及以上

2、编译前,会有各种报错,将test包删除,其它无需处理。

 

需要编译的目录:

debezium-core

debezium-connector-opengauss

debezium-api

 

SQL查看pgsql的版本,如果是低于9.6的,则需要修改源码。

SELECT version();  

Image

 


***修改源码处:

debezium-connector-opengauss:

将所有confirmed_flush_lsn 修改为confirmed_flush

 

 

编译命令:

mvn clean package -Dmaven.test.skip=true

 

或者idea 的右边maven编译

Image

 

 

最后所需的Jar包及依赖文件(一个都不能少),有些Jar包在编译后就更新repository中了,可自行复制。

Image

 




4、配置并启动Kafka Connect



1、CD到kafka目录编辑相关配置文件

cd /opt/service/kafka_2.13-3.6.1/config

vi connect-distributed.properties

 

plugin.path=/opt/service/kafka_2.13-3.6.1/plugins

Image

 

2、将Jar包目录拷贝到指定的plugins目录下

Image

 

3、启动Kafka 及 Kafka Connect :

 

启动kafka

./kafka-server-start.sh -daemon ../config/server.properties

 

启动Kafka Connect 

./connect-distributed.sh ../config/connect-distributed.properties

 

Kafka Connect 出现一些错可以不用管

 

 


5、注册Kafka Connect



用curl 或者postman等工具,post请求kafka地址注册:

post http://x:x:x:x:8083/connectors

{

  "name": "connect-opengauss-source",

  "config": {

    "connector.class": "io.debezium.connector.opengauss.OpengaussConnector",

    "database.hostname": "x.x.x.x",

    "database.port": "5432",

    "database.user": "vbadmin",

    "database.password": "xxxx",

    "database.dbname": "vastbase",

    "topic.prefix": "vastbase-",

    "table.include.list": "public.*", //public下的所有的表

    "database.server.id": "1",

    "database.server.name": "opengauss",

    "tasks.max": "1",

    "slot.name": "vastbase_slot", // 定义的slot

    "plugin.name": "pgoutput",

    "transforms": "route",

    "transforms.route.type": "org.apache.kafka.connect.transforms.RegexRouter",

    "transforms.route.regex": "^opengauss(.*)",

    "transforms.route.replacement": "opengauss_server_topic",

    "decimal.handling.mode": "string",

    "include.unknown.datatypes": "true",

    "slot.drop.on.stop": "true",

    "snapshot.mode": "initial", //此处必须配置,快照模式

    "commit.process.while.running": "true",

    "source.process.file.path": "/home/vastbase/data/connectors/process/",

    "commit.time.interval": "1",

    "create.count.info.path": "/home/vastbase/data/connectors/countInfo/",

    "process.file.count.limit": "10",

    "process.file.time.limit": "168",

    "append.write": "false",

    "file.size.limit": "10",

    "export.csv.path": "/home/vastbase/data/connectors/csv/",

    "export.csv.path.size ": " 2G",

    "signal.kafka.bootstrap.servers":"x.x.x.x:9092",  // 此处为kafka地址

    "errors.tolerance":"all" // 此处必须配置,静默忽略无效的消息

  }

}

 

具体字段描述请参考:

debezium-connector-opengauss 下的opengauss-source.properties

Image

 

Image

 

Image

 

 

请求成功后会返回请求数据:

Image

 

 

如想查看,直接用get命令:

Image

 

如想删除该connectors,直接用delete命令,后续是该connectors

Image

 

 


6、成功示例


Kibana Connect 控制台

Image

 

增删改数据后的kafka控制台:

可用命令:

kafka-console-consumer.sh --bootstrap-server <kafka_broker_address> --topic <topic_name> --from-beginning --property print.key=false --property print.value=true

Image

 

 


7、注意事项(容易出问题的地方)


1、Jar包缺失,或者版本过高
2、connectors配置文件配置不正确3、海量数据库配置不正确

4、源码未适配老版的pg slot视图的字段

 

 

有其它问题欢迎与我留言沟通。

 

Image

posted @ 2024-07-30 18:21  耀阳居士  阅读(35)  评论(0编辑  收藏  举报