上一篇文章着重介绍了读组件【source】的配置方法,那么有同学会好奇是不是要介绍写组件的配置方法了?
其实不然,写组件不需要配置,打注释度就可以。这就不得不提起GBase RTSync的工作方式了。GBase RTSync 实时同步系统由四个子系统组件组成,分别是读数据组件、消息队列组件、写数据组件和管理组件 。经过上百次的测试与验证,得出的同步方案最优解为:不采用RTSync的写组件,采用GBase 8a的kafka consumer 消费消息队列组件中生产的数据。
所以无需配置写组件,在之后会介绍GBase 8a的kafka consumer 配置方法。
今天介绍的是源端数据库与目标端数据库的配置方法。重中之重!各位仔细看
<mappings>该标签为读写端数据库表映射关系
id:唯一标示,因为可以配置多个source-target节点,需要确保该值唯一性。
<source-target id="4.179_4.179" groupName="gn1">该标签为映射实例,支持多个source-target映射,不过target仅支持同一数据库实例的同一数据库(oracle为schema)下的表信息
- id:唯一标示,因为可以配置多个source-target节点,需要确保该值唯一性。
- groupName: 代表该源所属于的组,通过配置该属性可以控制多少sourcetarget共享一份数据实例
<db> 为读写端数据库相关信息
重点来了
【sourcedb】源端(读端)数据库配置信息配置信息,其相关配置样例如下
<sourcedb charset="GB18030" type="GBASE8T" fetchSize="500" oracleScnStep="50000" timestampWithFraction="false" maxRecordsPerRead="200" maxSizeOfPerRecord="1024" cacheMaxSize="2147463480"
transMaxCount="1500000"
packetMaxSize="10240000" timeOut="2" driver="com.informix.jdbc.IfxDriver" url="jdbc:informix-sqli://10.10.10.10:8888/test2:INFORMIXSERVER=gbase_on;DB_LOCALE=zh_cn.gb18030-2000;CLIENT_LOCALE=zh_cn.gb18030-2000;newcodeset=gb18030,gb18030-2000,5488;dbdate=y4md" user="test" password="111111" catalog="test2"
haNodeName="" haCheckTime="30"/>
配置选项 | 选项说明 |
---|---|
charset | 数据采用byte读取后采用该编码方式转为string数据。 |
type | 标识数据库类型,目前支持GBASE8T,GBASE8TADV,ORACLE,ORACLE12C。当sourcedb的type为GBASE8TADV时,targetdb的type也必须为GBASE8TADV。 |
fetchSize | 设置jdbc批次返回数据量到结果集的大小,防止内存溢出,目前仅oracle有效,其他数据库不起作用。 |
oracleScnStep | 步长大小,主要用于读取oracle logminer信息时指定末端scn号大小,防止数据过大等待时间过长。 |
timestampWithFraction | 读取timestamp类型数据是否需要包含毫秒部分。 |
maxRecordsPerRead | 为每次读取的最大记录数,cdc使用,可不用修改。 |
maxSizeOfPerRecord | 表示每行数据最大需要的字节数,需要根据表的定义进行粗略估算,将每一列的定义长度换算成字节数后进行相加,然后向上按1k的倍数取整(例如:一行数据的字节数为3600,可以配置为4k即4096)。 |
cacheMaxSize | 事务缓存在内存中的最大数据量,单位为Byte,默认大小为100MB。超过该大小的事务会落地到磁盘中。 |
transMaxCount | 大事务拆分功能,如果事务条数超过指定配置大小,将会按照该条数将事务分为多个小事务。默认100000,目前仅oracle支持。 |
packetMaxSize | 事务分包读取的最大数据量,单位为Byte,默认大小为5MB。如果单条数据超过该大小,则保证该条数据的完整。 |
timeOut | 为读取数据的超时时间,单位为秒。 |
driver | 为数据库对应的jdbc驱动的Driver名称。 |
url | 为连接该数据库的url,请注意填写正确的IP地址、端口号、数据库用户名和密码。 |
user | 为数据库用户,针对全量同步,该用户需要有对dbName指定库表的查询权限;针对增量同步,该用户需要有查询cdc log的权限的权限(GBase 8t)或者使用logminer的权限(Oracle) |
password | 数据库密码。 |
catalog | 针对oracle为schema信息,针对其他数据库为用户数据库,即同步数据的来源库。 |
haNodeName | 当dccHost配置了多个ip时,认为用于cm切换,因此需要配置与dccHost个数对应的haNodeName,值应配置为dccHost中对应ip的服务器的hostname。 |
haCheckTime | 检测cm是否切换的轮询时间间隔,单位为秒。当type为GBASE8TADV时有效 |
除了以上配置选项之外还有其余参数,但是目前这些已经足够应对90% 的同步信息。其他的配置参数可以参考安装包的sample目录中的内容。