相比较于V86版本 GBase 8a V95版本在如下几个方面做出了优化
1.1.1 支持参数自动检查
单机参数,_gbase_kafka_transaction_mode = 1
所有参数设置上的问题,程序都会在start kafka consumer时自动检测,按命令给出的错误提示修改参数即可。
集群参数 gcluster_kafka_consumer_enable=1
gcluster_kafka_parallel_commit必须设置为1,也就是kafka consumer不使用多线程往单机下发数据。 设置为其他值会造成单机主备分片不一致的严重问题!!!
注:支持JSON和PUREDATA两种格式,后者必须与Rtsync组合使用。
1.1.2 支持非全列更新
原先kafka consumer要求JSON里的update操作必须带出所有列的值,无论变更与否,现在已支持,consumer遇到这种情况,会先根据JSON里的主键去8A库里查询这一行的所有列的值,然后把要更新的列替换为新值,再根据主键执行delete,最后insert一行。
需配置参数:
gcluster_kafka_ignore_pos_field = 1 气象局的producer不支持POS,因此配置这个参数让consumer不检查POS。
_t_gcluster_kafka_ignore_when_update_not_hit = 1 当查询没没命中时,consumer忽略当前这个操作,不对其进行同步。
这种情况下,JSON里的OP_TYPE="UN",而不是"U"。
2. 增加统计功能,统计每个批次的数据在kafka consumer环节的延迟时间
需要配置参数:
gcluster_kafka_consumer_latency_time_statistics = 1
打开参数后,consumer会对checkpoint table的列数进行扩充,增加三列,分别是: 本批数据被consumer接收到时的时间、consumer对本批数据完成提交的时间、本批次数据包含多少个dml操作。
3. 支持对字符串中的0进行转义,转为“\0”。
招行项目偶发性出现字符串中包含0(注意不是 '\'+'0'),造成consumer最终拼写的sql被这个0截断。
需要配置参数 gcluster_kafka_consumer_escape_zero=1.




