栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

炫“库”行动-人大金仓有奖征文-KFS目标端支持Kafka配置详解

炫“库”行动-人大金仓有奖征文-KFS目标端支持Kafka配置详解

【本文正在参与炫“库”行动-人大金仓有奖征文】

活动链接:  https://marketing.csdn.net/p/98bd30353e7cb998b6070a89e8b91edb

1、KFS目标端支持Kafka

        金仓异构数据同步软件Kingbase FlySync(简称KFS),向目标端(Kafka)同步数据时,主要向Kafka同步三类数据:

        A 、DDL语句:

        B、DML语句,包括用户表的数据更新、KFS中间表的数据更新

        C、源端提交事务时的相关数据,例如:服务名,模式名,seqno等

2、目标端支持Kafka-同步结构设计

2.1 整体同步结构设计

        注:Kingbase Flysync的KUFL是将从不同数据库中抽取的数据操作信息以一种统一的数据存储格式进行存放的一系列中间文件,它是独立于任何数据库的可传输数据格式。

2.2 目标端拓扑规则

        KFS V1R6目前支持的拓扑结构,包括:

               1) 1 :1 (1为Kafka)

                2)1 :N(N中可以全部为Kafka,也可以部分为Kafka)

                3)N :1(1为Kafka)

                4)级联(中间节点和最终节点,都可以是Kafka)

3、目标端支持Kafka-相关配置介绍

3.1、基础配置

        KFS的配置文件是:flysync.ini文件,Kafka作为目标端,基础配置如下:

        [defaults]

        install-directory=/home/kafka/slavenode

        profile-script=~/.bash_profile

        rmi-port=11000

        [kafka]

        role=slave        

        master=192.168.180.133

        master-kufl-port=3033

        members=192.168.180.133

        kufl-port=3233

        replication-host=192.168.180.133

        replication-port=9092

         #链接kafka的用户名

        replication-user=kesuser

         #链接kafka的密码,无就写null

        replication-password=null

        datasource-type=kafka

3.2、高阶配置

        #是否嵌入事务信息 (true/flase),默认 false

        property=replicator.applier.dbms.enabletxninfo=true

        #是否开启事务信息 topic(true/flase),默认 false

        property=replicator.applier.dbms.enabletxninfoTopic=true

        #事务信息 topic 名称,默认 flysync_transactions

        property=eplicator.applier.dbms.txninfoTopic=flysync_transactions

        #将所有DML和DDL都发送至Kafka的同一个topic,默认flysync_test

        property=replicator.applier.dbms.singleTopicName=flysync_test

        #将所有DDL都发送至Kafka的同一个topic,默认flysync_ddl

        #如果已经配置singleTopicName,则ddlTopic配置无效

        property=replicator.applier.dbms.ddlTopic=flysync_ddl

4、目标端支持Kafka-消息在Topic中的存储规则

        Kingbase Flysync目前采用将DML/DDL/事务信息封装为JSON的方式,和Kafka进行通信。和Kafka通信时,topic既可以使用数据库模式名,也可以使用用户统一配置的topic。

4.1、KFS在Kafka中创建Topic的规则

        当ini文件中只配置基础配置时,KFS在目标端Kafka默认新建如下Topic:

        flysync_transactions :用于记录事务信息(用户可以通过txninfoTopic参数修改该topic名称)

        flysync_ddl :用于记录所有DDL信息(用户可以通过ddlTopic参数修改该topic名称)

        {SCHEMA}_{TABLE} :对每张表(包括用户建立的表或KFS的中间表),当有数据更新时,KFS默认在Kafka中建立一个topic,名称是:表所在模式的模式名+“_”+表名

        当ini文件中有singleTopicName配置时,还会在Kafka中新建如下Topic

        flysync_test:用于记录所有的DDL和DML信息(用户可以通过singleTopicName参数修改topic名称)

4.2、消息在Topic中存储规则

        A、如果enabletxninfoTopic配置为true,则目标端接收源端发送的事务相关信息,默认是存储到flysync_transactions中(如果ini配置文件中设置了新的topic,则存储到对应的topic)

        B、 如果没有配置singleTopicName,则:

              1)目标端接收DML消息后,默认存储到每张表对应的topic中(topic命名规则见4.3),DML示例如下:

               2)目标端接收DDL消息发,默认存储到flysync_ddl中(如果ini配置文件中设置了新的topic名称,则发送到对应的topic),DDL示例如下:

        C、如果配置了singleTopicName,在目标端接收到DML和DDL后,都只存储到flysync_test(如果ini配置文件中设置了新的topic名称,则发送到对应的topic),而不再存储到flysync_ddl和每张表对应的topic中

5、目标端支持Kafka-限制和约束

        A、KFS数据同步DDL时,暂时只支持部分数据源同步DDL功能

                KFS V1R6 目前支持同步DDL的数据源包括:

                        1)Kingbase V7

                        2)Kingbase V8(包括:v8r3、v8r6、v8r6pg)

                        3)Oracle(redo形式)

                        4)PG

                源端如果设置dropstatementdata参数,那么在源端会过滤掉所有DDL语句,则向Kafka同步的信息中,将不包含DDL语句

        B、目标端是Kafka时,仅支持实时同步,不支持初始搬迁和数据比对功能

        C、受Kafka本身对topic名称限制,自定义topic名称命名受如下限制

                1)字母或者下划线开通,后面跟字母、数字、下划线、中划线、点

                2)不支持中文字符作为表名或模式名

        D、如果没有配置Kafka集群时,Kafka本身掉电可能会导致Kafka数据丢失

6、结束语

        KFS支持目标端Kafka后,可以将源端数据库的操作(DML/DDL),通过KFS传递到Kafka,而Kafka以高容错的方式有序、持久的存储KFS同步的数据流,既可以在源端数据库发生异常时,提供必要信息进行追踪/恢复,对数据库的数据安全起到了一定作用;同时Kafka可以将存储的数据流提供给不同的消费者进行消费,从而有效的降低了应用直接访问数据库对数据库的压力。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号