|
· PostgreSQL数据库需要开启WAL日志归档后,才能使用源CDC组件。开启WAL日志归档的具体操作步骤请参见实时同步常见问题解答中的“PostgreSQL数据库开启WAL日志归档”。 · MySQL或MySQL8数据库需要开启Binlog日志归档后,才能使用源CDC组件。开启Binlog日志归档的具体操作步骤请参见实时同步常见问题解答中的“MySQL、MySQL8或DRDS数据库开启Binlog”。 · Oracle数据库使用源CDC组件时需要开启归档日志,启用LogMiner。启用的具体操作步骤请参见实时同步常见问题解答中的“Oracle数据库启动CDC”。 · 达梦数据库使用源CDC组件时需要开启CDC。CDC启用的具体操作步骤参见实时同步常见问题解答中的“达梦数据库开启CDC”。 · Kingbase数据库使用源CDC组件时需要修改Kingbase.conf中的参数,wal_level=logical,max_replication_slot=10。这两个参数默认被注释,解除注释后,修改wal_level为logical,允许WAL记录逻辑解码所需的信息。max_replication_slots设置支持的复制槽的最大数量,默认为10,可根据需要运行在该数据库上的CDC作业数量修改该值,修改的值要大于作业数。Kingbase数据库如果使用的是普通用户来进行CDC抽取,则需要为普通用户赋予replication权限,赋权命令如下:create user <用户名> password <密码>; alter user <用户名> replication;。 · SQL SERVER数据库使用源CDC组件时,所有要抽取的表都需要开启CDC,且SQLSERVERAGENT服务需要启动。CDC启用的具体操作步骤请参见实时同步常见问题解答中的“SQL SERVER数据库开启CDC”,SQLSERVERAGENT服务的启动方式根据系统环境由用户自行选择合适方式进行开启。 · 当源端数据库所在服务器磁盘空间不足时,会出现源端停止捕获的现象,需要清理磁盘空间后,在源端数据库执行EXEC sys.sp_cdc_start_job命令,源端即可恢复数据捕获。 · PostgreSQL数据库默认配置10个复制槽,如果同时运行10个以上任务操作PostgreSQL数据库,由于复制槽不足,可能会导致部分任务运行失败。槽位不足的解决方法包含4种,可根据实际情况选择。(1)如果需要同时运行10个以上任务抽取同一PostgreSQL数据库时,可在运行作业前根据需求适当调整PostgreSQL数据库postgresql.conf配置文件中max_replication_slots属性的大小(需重启数据库)。(2)删除已有的源端CDC PostgreSQL作业可释放复制槽。(3)在PostgreSQL数据库客户端执行select pg_drop_replication_slot('作业code')命令手动释放复制槽。 |
源CDC组件捕获源数据库所配置的表的数据,将该数据解析传输到目的端进行入库操作。
CDC所有源库,如果源表没有主键,数据同步时可能存在不一致的情况。为保证数据一致,建议所有抽取的表都要有主键。
SQL Server CDC使用普通用户时,需要赋予dbo权限,否则捕获DDL功能将无法使用。
源CDC组件支持捕获源库的Insert、update、delete操作,不支持捕获truncate操作。
目的端是Vertica时,对于源端BLOB、CLOB字段,如果存储字节大小需要超过1MB,则需要调整自动建表语句,扩大Vertica的相应的表字段长度,否则可能会因为存储字段超长而不能写入。
源CDC组件(Oracle、MySQL、MySQL8、SQL Server、达梦)支持同步DDL字段级别变更(达梦不支持进行字段删除操作),监控源端字段的增删改、并自动将字段的变更同步到目的端,源CDC组件(PostgreSQL、Kingbase)暂不支持同步DDL字段级别变更。
同步DDL注意事项:
全量阶段不支持DDL。
Oracle、MySQL、MySQL8、SQL Server增量阶段支持新增、修改、删除字段。
达梦数据库增量阶段不支持带有约束字段的新增和变更,不支持删除字段。
目的端为Vertica数据库时,不支持数字类型(例如int、float等)直接转换为Varchar类型的DDL。
达梦数据库不支持blob、clob、binary、longvarbinary、longvarchar、varbinary、text、bfile类型字段的数据捕获和同步。
针对SQL Server数据库,当源端SQL Server数据库变更的业务数据涉及新增字段(如update该字段),请确认CDC将DDL同步过去之后(可通过查看日志来查看是否已同步)再产生业务数据,这种情况下可保证数据一致,否则可能会存在数据丢失的情况。
针对SQL Server数据库,监控到字段的DDL后,会关闭再开启表CDC,这期间(毫秒级)产生的业务数据会丢失,若设置参数cdc.switch.lock_table为true(默认false),这期间会进行锁表,可避免丢失数据。注意:锁表时可能会引起业务阻塞,请谨慎将cdc.switch.lock_table设置为true。
当源端选择MongoDB时,只支持加载至Kafka。
当源端为Kingbase时,不支持bfile类型及无主键表的实时同步。
当源端为Oracle时,不支持bfile类型数据的实时同步。
抽取方式:可选指定时间、全量+增量、最近偏移量、指定偏移量、全量。不同数据库支持的抽取方式不同,具体支持的情况请以实际页面为准。
指定时间:抽取数据时以该时间为起始时间,将该时间之后产生的数据进行不断抽取。
全量+增量:将源表的所有的数据以及增量数据全部进行抽取。
全量:将源表的所有数据进行抽取。
最近偏移量:以任务开始运行的那一刻之后产生的数据进行抽取。
指定偏移量:抽取数据是从指定偏移量进行抽取。
库:选择要抽取的数据源下的数据库。
表:选择要抽取的数据表,选择的表数量不建议超过100个,否则作业运行可能出现数据无法同步的问题。抽取MySQL、Oracle、SQLServer过程中,当有新建的表的表名符合页面抽取的表配置时,将在目的端根据映射关系动态创建目标表名,支持自动建表的数据库类型MySQL、Oracle、SQLServer、PostgreSQL、Vertica、ClickHouse。
如果目标端是Kafka,将根据映射关系自动创建或匹配对应的topic。
如果目标端是JDBC且支持自动建表的数据库类型,将根据映射关系自动创建目标表。
HUDI加载组件开启Hive同步时支持自动建表,未开启Hive同步时不支持自动建表。
表模糊匹配:库名、表名支持模糊匹配,只支持录入%进行模糊匹配,且格式必须为库名.表名。例如TestDB%.dig_%则代表了所有库以TestDB开头的,表名为dig_开头的表。“表模糊匹配”匹配到的表会和“已选表”取并集,作为源端要抽取的表。
启用XA抽取:仅数据库连接选择MySQL、MySQL8时可配置该项。勾选后,XA事务将进行缓存,遇到XA COMMIT [ONE PHASE]时才进行数据处理,遇到XA ROLLBACK时,将进行数据回滚。不勾选时,XA事务按照普通事务进行处理。
抽取LOB字段:仅数据库连接选择Oracle时需配置该项,勾选后会抽取LOB字段。注意此配置只针对增量有效。全量阶段默认会抽取,无需配置。
最长事务(小时):当数据库连接选择Oracle、或者数据库连接选择MySQL、MySQL8并启用XA抽取时展示该配置项。用户指定的最大事务时长,如果事务长度大于该值,则丢弃该事务。该项默认值为8小时,设置为0时表示不限制事务时长。
批量大小:每批次抽取数据的条数,系统会根据用户抽取的表的数据量大小自动推荐一个值,如无特殊需求,采用括号中系统推荐值即可。若单条数据比较大(含大字段),适当调小该值可避免内存溢出;若单条数据较小,适当提高该值可提高数据抽取速度。如果抽取的表中包含大字段时建议调小批量大小,批量大小建议不超过100。
并行度:全量数据抽取时抽取任务的线程数量,系统会根据用户抽取的表的数据量大小自动推荐一个值,如无特殊需求,采用括号中系统推荐值即可。系统中所有实时作业的源端、目标端并行度累计不能超过Flink集群最大限制(默认为192),否则作业将提交失败。
分片大小:指定抽取数据时对数据进行分片的大小。
当数据中包含大字段时,抽取速度可能无法满足性能规格,建议适当调低分片大小。
当源端选择MongoDB数据源时,分片大小指数据块大小(MB)。
当源端选择除MongoDB外其他数据源时,分片大小指数据条数,系统会根据用户抽取的表的数据量大小自动推荐一个值,如无特殊需求,采用括号中系统推荐值即可。
忽略不能解析的DDL:默认不勾选,遇到不能解析的DDL时作业将终止;勾选后,遇到不能解析的DDL将忽略。
数字处理方式:配置抽取数据中的数字的处理方式,支持转换为precise、string、double三种格式,其中precise为保持原有格式。
二进制处理方式:配置抽取数据中的二进制数据的处理方式,支持处理为bytes、base64、base64-url-safe、hex格式。
忽略的操作:配置源CDC不同步的操作类型,默认不同步truncate。
附加参数:默认可不填该项,该项配置用于不常用的参数配置。例如log.mining.strategy可以配置Oracle数据库日志抽取模式(online_catalog或redo_log_catalog)。