配置项 | 是否必选 | 默认值 | 类型 | 描述 |
---|---|---|---|---|
connector | 是 | 无 | String | 指定要使用的连接器,此处为 'oceanbase-cdc' 。 |
scan.startup.mode | 是 | 无 | String | 指定 OceanBase CDC 消费者的启动模式。可取值为'initial' ,'latest-offset' or
'timestamp' 。 |
scan.startup.timestamp | 否 | 无 | Long | 起始点的时间戳,单位为秒。仅在启动模式为 'timestamp' 时可用。 |
username | 是 | 无 | String | 连接 OceanBase 数据库的用户的名称。 |
password | 是 | 无 | String | 连接 OceanBase 数据库时使用的密码。 |
tenant-name | 是 | 无 | String | 待监控 OceanBase 数据库的租户名,应该填入精确值。 |
database-name | 否 | 无 | String | 待监控 OceanBase 数据库的数据库名,应该是正则表达式,该选项只支持和 'initial' 模式一起使用。 |
table-name | 否 | 无 | String | 待监控 OceanBase 数据库的表名,应该是正则表达式,该选项只支持和 'initial' 模式一起使用。 |
table-list | 否 | 无 | String | 待监控 OceanBase 数据库的全路径的表名列表,逗号分隔,如:"db1.table1, db2.table2"。 |
hostname | 否 | 无 | String | OceanBase 数据库或 OceanBbase 代理 ODP 的 IP 地址或主机名。 |
port | 否 | 无 | Integer |
OceanBase 数据库服务器的整数端口号。可以是 OceanBase 服务器的 SQL 端口号(默认值为 2881) 或 OceanBase代理服务的端口号(默认值为 2883) |
connect.timeout | 否 | 30s | Duration | 连接器在尝试连接到 OceanBase 数据库服务器超时前的最长时间。 |
server-time-zone | 否 | +00:00 | String |
数据库服务器中的会话时区,用户控制 OceanBase 的时间类型如何转换为 STRING。 合法的值可以是格式为"±hh:mm"的 UTC 时区偏移量, 如果 mysql 数据库中的时区信息表已创建,合法的值则可以是创建的时区。 |
logproxy.host | 是 | 无 | String | OceanBase 日志代理服务 的 IP 地址或主机名。 |
logproxy.port | 是 | 无 | Integer | OceanBase 日志代理服务 的端口号。 |
logproxy.client.id | 否 | 规则生成 | String | OceanBase日志代理服务的客户端连接 ID,默认值的生成规则是 {flink_ip}_{process_id}_{timestamp}_{thread_id}_{tenant}。 |
rootserver-list | 否 | 无 | String | OceanBase root 服务器列表,服务器格式为 `ip:rpc_port:sql_port`, 多个服务器地址使用英文分号 `;` 隔开,OceanBase 社区版本必填。 |
config-url | 否 | 无 | String | 从配置服务器获取服务器信息的 url, OceanBase 企业版本必填。 |
working-mode | 否 | storage | String | 日志代理中 `libobcdc` 的工作模式 , 可以是 `storage` 或 `memory`。 |
compatible-mode | 否 | mysql | String | OceanBase 的兼容模式,可以是 `mysql` 或 `oracle`。 |
jdbc.driver | 否 | com.mysql.jdbc.Driver | String | 全量读取时使用的 jdbc 驱动类名。 |
jdbc.properties.* | 否 | 无 | String | 传递自定义 JDBC URL 属性的选项。用户可以传递自定义属性,如 'jdbc.properties.useSSL' = 'false'。 |
列名 | 数据类型 | 描述 |
---|---|---|
tenant_name | STRING NOT NULL | 当前记录所属的租户名称。 |
database_name | STRING NOT NULL | 当前记录所属的库名。 |
table_name | STRING NOT NULL | 当前记录所属的表名称。 |
op_ts | TIMESTAMP_LTZ(3) NOT NULL | 该值表示此修改在数据库中发生的时间。如果这条记录是该表在快照阶段读取的记录,则该值返回 0。 |
OceanBase 数据类型 | Flink SQL 类型 | 描述 |
---|---|---|
BOOLEAN TINYINT(1) BIT(1) |
BOOLEAN | |
TINYINT | TINYINT | |
SMALLINT TINYINT UNSIGNED |
SMALLINT | |
INT MEDIUMINT SMALLINT UNSIGNED |
INT | |
BIGINT INT UNSIGNED |
BIGINT | |
BIGINT UNSIGNED | DECIMAL(20, 0) | |
REAL FLOAT |
FLOAT | |
DOUBLE | DOUBLE | |
NUMERIC(p, s) DECIMAL(p, s) where p <= 38 |
DECIMAL(p, s) | |
NUMERIC(p, s) DECIMAL(p, s) where 38 < p <=65 |
STRING |
DECIMAL 等同于 NUMERIC。在 OceanBase 数据库中,DECIMAL 数据类型的精度最高为 65。 但在 Flink 中,DECIMAL 的最高精度为 38。因此, 如果你定义了一个精度大于 38 的 DECIMAL 列,你应当将其映射为 STRING,以避免精度损失。 |
DATE | DATE | |
TIME [(p)] | TIME [(p)] | |
DATETIME [(p)] | TIMESTAMP [(p)] | |
TIMESTAMP [(p)] | TIMESTAMP_LTZ [(p)] | |
CHAR(n) | CHAR(n) | |
VARCHAR(n) | VARCHAR(n) | |
BIT(n) | BINARY(⌈n/8⌉) | |
BINARY(n) | BINARY(n) | |
VARBINARY(N) | VARBINARY(N) | |
TINYTEXT TEXT MEDIUMTEXT LONGTEXT |
STRING | |
TINYBLOB BLOB MEDIUMBLOB LONGBLOB |
BYTES | |
YEAR | INT | |
ENUM | STRING | |
SET | ARRAY<STRING> |
因为 OceanBase 的 SET 类型是用包含一个或多个值的字符串对象表示, 所以映射到 Flink 时是一个字符串数组 |
JSON | STRING | JSON 类型的数据在 Flink 中会转化为 JSON 格式的字符串 |
OceanBase type | Flink SQL type | NOTE |
---|---|---|
NUMBER(1) | BOOLEAN | |
NUMBER(p, s <= 0), p - s < 3 | TINYINT | |
NUMBER(p, s <= 0), p - s < 5 | SMALLINT | |
NUMBER(p, s <= 0), p - s < 10 | INT | |
NUMBER(p, s <= 0), p - s < 19 | BIGINT | |
NUMBER(p, s <= 0), 19 <=p - s <=38 | DECIMAL(p - s, 0) | |
NUMBER(p, s > 0) | DECIMAL(p, s) | |
NUMBER(p, s <= 0), p - s> 38 | STRING | |
FLOAT BINARY_FLOAT |
FLOAT | |
BINARY_DOUBLE | DOUBLE | |
DATE TIMESTAMP [(p)] |
TIMESTAMP [(p)] | |
CHAR(n) NCHAR(n) VARCHAR(n) VARCHAR2(n) NVARCHAR2(n) CLOB |
STRING | |
RAW BLOB ROWID |
BYTES |