使用 Docker 容器中的 ksqlDB 运行 连接到外部 Oracle 数据库
Connect to External Oracle database using ksqlDB running in Docker container
我正在尝试使用 Windows 10 机器上 docker 容器中的 ksqlDB 运行ning 连接到外部 Oracle 数据库。我已经阅读了 ksqlDB 网站上提到的教程,并使用下面的 docker-compose 文件设法 运行 ksqlDB。现在,我需要创建 JDBC 连接器来连接到外部 ORACLE 数据库(不在容器内)。由于大多数可用教程都在容器内的 Postgres 数据库 运行ning 上,我对与外部数据库的连接有点困惑。我在下面提到了一个连接器模板。请建议我如何根据我的 Oracle 数据库配置修改它?
假设,Oracle 数据库配置在我的本地机器上如下所述:
HOST = dev-db.com
PORT = 1522
SERVICE NAME = dv06.db.com
Postgres 的连接器模板:
CREATE SOURCE CONNECTOR jdbc_source WITH (
'connector.class' = 'io.confluent.connect.jdbc.JdbcSourceConnector',
'connection.url' = 'jdbc:postgresql://postgres:5432/postgres',
'connection.user' = 'postgres',
'connection.password' = 'password',
'topic.prefix' = 'jdbc_',
'table.whitelist' = 'driver_profiles',
'mode' = 'incrementing',
'numeric.mapping' = 'best_fit',
'incrementing.column.name' = 'driver_id',
'key' = 'driver_id',
'key.converter' = 'org.apache.kafka.connect.converters.IntegerConverter');
Docker-compose.yml
---
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:5.4.0
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: confluentinc/cp-kafka:5.4.0
hostname: broker
container_name: broker
depends_on:
- zookeeper
ports:
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
ksqldb-server:
image: confluentinc/ksqldb-server:0.7.0
hostname: ksqldb-server
container_name: ksqldb-server
depends_on:
- broker
ports:
- "8088:8088"
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: broker:9092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_CONNECT_WORKER_CONFIG: "/connect/connect.properties"
KSQL_CONNECT_GROUP_ID: "ksql-connect-cluster"
KSQL_CONNECT_BOOTSTRAP_SERVERS: "broker:9092"
KSQL_CONNECT_KEY_CONVERTER: "io.confluent.connect.avro.AvroConverter"
KSQL_CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
KSQL_CONNECT_VALUE_CONVERTER: "io.confluent.connect.avro.AvroConverter"
KSQL_CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
KSQL_CONNECT_CONFIG_STORAGE_TOPIC: "ksql-connect-configs"
KSQL_CONNECT_OFFSET_STORAGE_TOPIC: "ksql-connect-offsets"
KSQL_CONNECT_STATUS_STORAGE_TOPIC: "ksql-connect-statuses"
KSQL_CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_PLUGIN_PATH: "/usr/share/kafka/plugins"
volumes:
- ./confluentinc-kafka-connect-jdbc-5.4.0:/usr/share/kafka/plugins/jdbc
ksqldb-cli:
image: confluentinc/ksqldb-cli:0.7.0
container_name: ksqldb-cli
depends_on:
- broker
- ksqldb-server
entrypoint: /bin/sh
tty: true
如果您需要了解要使用的 connection.url
的格式,那么这里的 Oracle 文档是您的朋友:https://docs.oracle.com/database/121/TDPJD/getconn.htm#TDPJD138
例如,以下可能适合您:
'connection.url' = 'jdbc:oracle:thin:@dev-db.com:1522',
当然,您还需要更新用户名、密码和其他有关要使用连接器导入的表及其键的详细信息。
我正在尝试使用 Windows 10 机器上 docker 容器中的 ksqlDB 运行ning 连接到外部 Oracle 数据库。我已经阅读了 ksqlDB 网站上提到的教程,并使用下面的 docker-compose 文件设法 运行 ksqlDB。现在,我需要创建 JDBC 连接器来连接到外部 ORACLE 数据库(不在容器内)。由于大多数可用教程都在容器内的 Postgres 数据库 运行ning 上,我对与外部数据库的连接有点困惑。我在下面提到了一个连接器模板。请建议我如何根据我的 Oracle 数据库配置修改它?
假设,Oracle 数据库配置在我的本地机器上如下所述:
HOST = dev-db.com
PORT = 1522
SERVICE NAME = dv06.db.com
Postgres 的连接器模板:
CREATE SOURCE CONNECTOR jdbc_source WITH (
'connector.class' = 'io.confluent.connect.jdbc.JdbcSourceConnector',
'connection.url' = 'jdbc:postgresql://postgres:5432/postgres',
'connection.user' = 'postgres',
'connection.password' = 'password',
'topic.prefix' = 'jdbc_',
'table.whitelist' = 'driver_profiles',
'mode' = 'incrementing',
'numeric.mapping' = 'best_fit',
'incrementing.column.name' = 'driver_id',
'key' = 'driver_id',
'key.converter' = 'org.apache.kafka.connect.converters.IntegerConverter');
Docker-compose.yml
---
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:5.4.0
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
broker:
image: confluentinc/cp-kafka:5.4.0
hostname: broker
container_name: broker
depends_on:
- zookeeper
ports:
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
ksqldb-server:
image: confluentinc/ksqldb-server:0.7.0
hostname: ksqldb-server
container_name: ksqldb-server
depends_on:
- broker
ports:
- "8088:8088"
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_BOOTSTRAP_SERVERS: broker:9092
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: "true"
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: "true"
KSQL_KSQL_CONNECT_WORKER_CONFIG: "/connect/connect.properties"
KSQL_CONNECT_GROUP_ID: "ksql-connect-cluster"
KSQL_CONNECT_BOOTSTRAP_SERVERS: "broker:9092"
KSQL_CONNECT_KEY_CONVERTER: "io.confluent.connect.avro.AvroConverter"
KSQL_CONNECT_KEY_CONVERTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
KSQL_CONNECT_VALUE_CONVERTER: "io.confluent.connect.avro.AvroConverter"
KSQL_CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: "http://schema-registry:8081"
KSQL_CONNECT_CONFIG_STORAGE_TOPIC: "ksql-connect-configs"
KSQL_CONNECT_OFFSET_STORAGE_TOPIC: "ksql-connect-offsets"
KSQL_CONNECT_STATUS_STORAGE_TOPIC: "ksql-connect-statuses"
KSQL_CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 1
KSQL_CONNECT_PLUGIN_PATH: "/usr/share/kafka/plugins"
volumes:
- ./confluentinc-kafka-connect-jdbc-5.4.0:/usr/share/kafka/plugins/jdbc
ksqldb-cli:
image: confluentinc/ksqldb-cli:0.7.0
container_name: ksqldb-cli
depends_on:
- broker
- ksqldb-server
entrypoint: /bin/sh
tty: true
如果您需要了解要使用的 connection.url
的格式,那么这里的 Oracle 文档是您的朋友:https://docs.oracle.com/database/121/TDPJD/getconn.htm#TDPJD138
例如,以下可能适合您:
'connection.url' = 'jdbc:oracle:thin:@dev-db.com:1522',
当然,您还需要更新用户名、密码和其他有关要使用连接器导入的表及其键的详细信息。