动机
本教程试图解决的问题是 CockroachDB 缺少本地 Fivetran 连接器。我的客户基于 Fivetran 构建了他们的分析管道。鉴于没有原生集成,他们的下一个最佳猜测是设置 Postgres 连接器:
CockroachDB 与 PostgreSQL 线路兼容,但假设它是 1:1 是不正确的。让我们尝试配置连接器:
最终,您会遇到错误 java.lang.NumberFormatException: For input string: "CCL"。
问题源于 Fivetran 解析SELECT VERSION()查询输出的方式。在 CockroachDB 中,输出是CockroachDB CCL v21.2.5 (x86_64-unknown-linux-gnu, built 2022/02/07 21:01:07, go1.16.6),而在 PostgreSQL 中,它是PostgreSQL 14.2 on x86_64-apple-darwin21.3.0, compiled by Apple clang version 13.0.0 (clang-1300.0.29.30), 64-bit或某个版本。有一个支持 Fivetran 的开放线程请求 CockroachDB连接器。同时,我有一个问题要解决,直观地,我建议利用 CockroachDB Change Data Capture。我们快速查看了可用的 Fivetran 连接器,你瞧,Kafka 和 S3 连接器都可用。我有一个潜在的解决方案。我的目标是配置 CockroachDB CDC 输出到 Kafka,然后 Fivetran 会选择主题并将它们传递给 Snowflake。让我们看看这一切是如何发生的。
本教程中讨论的所有产品都可作为 SaaS 使用。我将尝试使用所有免费套餐或试用服务。请注意,CockroachDB CDC 今天不提供免费套餐。您必须使用专用实例,我正在使用CockroachDB Dedicated。免费套餐中的企业 CDC 是我们正在考虑的事情。敬请关注。
高级步骤
- 创建和配置 Confluent Cloud Kafka 集群。
- 创建并配置 Cockroach Cloud 专用集群。
- 创建和配置 Snowflake 实例。
- 为 Confluent Kafka 创建和配置 Fivetran 连接器。
- 为 Snowflake 创建和配置 Fivetran 目标。
- 核实。
分步说明
创建和配置 Confluent Cloud Kafka 集群
使用 Confluent Cloud 创建一个帐户,然后创建一个集群。
创建集群:基本
- 地区/专区:谷歌云
- 地区:us-east4
- 可用性:单区
- 继续
- 集群名称:cluster_0启动集群
安装 Confluent CLI。
curl -sL --http1.1 https://cnfl.io/cli | sh -s -- latest
export PATH=$(pwd)/bin:$PATH 使用Confluent CLI登录。
confluent login --save列出可用环境并设置活动环境上下文。
confluent environment list
confluent environment use <envid>列出当前 Kafka 集群并设置活动集群上下文。
confluent kafka cluster list
confluent kafka cluster use <clusterid>创建 API 密钥、机密和存储以通过 CLI 与环境无缝交互。
confluent api-key create --resource <clusterid>
confluent api-key store --resource <clusterid> --force获取 Kafka 端点。我们在设置 CockroachDB CDC 时将需要它。
confluent kafka cluster describe <clusterid>我将在本教程中使用内置的 TPC-C 工作负载,并将根据 CockroachDB 表名在 Kafka 中主动创建一些主题。或者,CockroachDB CDC 可以创建主题。Kafka 集群必须将auto.create.topics.enable设置设置true为才能正常工作。
我将创建一个跟踪多个表的更改提要。我将使用的表是customer、district和history。
confluent kafka topic create customer --partitions 6
confluent kafka topic create district --partitions 6
confluent kafka topic create history --partitions 6创建主题后,我们可以启动 Kafka 消费者来正确验证数据流。
confluent api-key use <API KEY> --resource <clusterid>
confluent kafka topic consume district我们只需要与单个消费者进行验证。如果您好奇,您可以打开其他几个终端窗口并使用这些主题。
confluent kafka topic consume customer
confluent kafka topic consume history我们已经完成了 Confluent Cloud 部分。现在,让我们切换到 CockroachDBD 来更改提要配置。
创建和配置 Cockroach Cloud 专用集群
给定一个专用集群,我们需要连接到集群并启用更改源。
SET CLUSTER SETTING kv.rangefeed.enabled = true;此时,我们可以开始写入数据并让 CDC 将其推送到 Kafka。我将使用Cockroach 二进制文件内置的TPC-C工作负载。
cockroach workload fixtures import tpcc --warehouses=10 'postgresql://user@cluster.cockroachlabs.cloud:26257/tpcc?sslmode=verify-full&sslrootcert=/path/certs/cluster-ca.crt'cockroach workload run tpcc --warehouses=10 --ramp=3m --duration=1h 'postgresql://user@cluster.cockroachlabs.cloud:26257/tpcc?sslmode=verify-full&sslrootcert=/path/certs/cluster-ca.crt'此时,我们有一个 Kafka 消费者终端等待有关该district主题的传入消息。我有一个 TPC-C 工作负载终端窗口打开,在 CockroachDB 上生成工作负载。我还打开了另一个 CockroachDB SQL 客户端窗口以设置更改提要。
我正在使用以下 SQL 语法在三个表上创建更改源:
use tpcc;
CREATE CHANGEFEED FOR TABLE customer, district, history INTO "kafka://confluentcluster.confluent.cloud:9092?tls_enabled=true&sasl_enabled=true&sasl_user=<APIKEY>&sasl_password=<url-encoded secret>&sasl_mechanism=PLAIN" WITH updated, key_in_value, format = json;sasl_password是来自 Confluent Cloud 的 url 编码的秘密。我使用此服务对秘密进行 url 编码。
此时,我们有一个有效的更改提要,您的 Confluent 消费者应该开始显示生命迹象。
以下是我的终端窗口,从上到下:Kafka 消费者、具有更改提要的作业 ID 的 CockroachDB SQL 客户端,以及在底部生成负载的活动 TPC-C 工作负载窗口。
我们现在可以为目标仓库设置 Snowflake。
创建和配置雪花实例
创建一个雪花帐户,导航到数据库并创建一个目标数据库。

我称我的为“fivetran”。
我们正处于最后阶段,我们现在可以切换到 Fivetran 并连接这些点。
为 Confluent Kafka 创建和配置 Fivetran 连接器
使用 Fivetran 创建一个帐户。
- 添加连接器:Confluent Cloud
- 目标架构:confluent_cloud
- 消费群:cockroachdb
- 服务器:yourcluster.confluent.cloud :9092
- 消息类型:json
- 同步类型:打包
- 安全协议:SASL
- API Key:您原来的 Confluent Cloud API 密钥
- API Secret:你原来的 Confluent Cloud 密码
- 保存并测试
- 选择您的数据
- 开始初始同步

为 Snowflake 创建和配置 Fivetran 目标
- 添加目的地
- 雪花
- 托管youraccount.snowflakecomputing.com
- 端口 443
- 使用您的雪花用户
- 数据库tpcc
- 验证密码

核实
Fivetran 完成同步后,您可以导航到 Snowflake 并在 Databases/Fivetran/confluent_cloud/Tables/District/Data Preview 下查看您的数据。
文章来源:https://dzone.com/articles/saas-galore-integrating-cockroachdb-with-confluent





