CREATE MONGODB CONNECTION

CREATE MONGODB CONNECTION 以名称和连接选项注册 MongoDB 连接,使 MatrixOne 能够通过外部表查询外部 MongoDB 集合。

描述

CREATE MONGODB CONNECTION 在 MatrixOne 中注册一个 MongoDB 连接。注册连接后,可以创建 ENGINE = mongodb 的外部表来映射 MongoDB 集合,并使用标准 SQL 查询它。

连接使用 hosts 列出种子服务器,或使用 srv_host 进行 DNS SRV 服务发现。认证默认使用针对 admin 认证数据库的 SCRAM-SHA-256 机制,且默认要求启用 TLS。

必须且只能指定 hostssrv_host 中的一个。credential_secret_ref 为必填项。v4.2.0 的 CN 使用内置环境变量 resolver,因此引用必须是账号作用域的 secret://env/... 名称;MatrixOne 不接受在 DDL 中直接填写密码。

要修改现有连接,请使用 ALTER MONGODB CONNECTION ... SET (...)... ENABLE... DISABLE。要删除连接,请使用 DROP MONGODB CONNECTION

前置条件

创建 MongoDB 连接前:

  • 按下文配置必需的账号作用域环境变量凭据。

  • 为 MongoDB 端点配置主机名或 CIDR allowlist。

  • 必须且只能提供 hostssrv_host 中的一个。

  • 确保 MatrixOne 主机能够访问 MongoDB 端点。

v4.2.0 构造器默认启用 MongoDB 连接器,但在每个 CN 配置 allowlist 前,端点访问仍然 fail-closed。DNS 主机名需要配置 allowed-host-suffixes,直接使用 IP 地址需要配置 allowed-cidrs,使用回环地址则需要设置 allow-loopback = true。例如:

[cn.frontend.mongodb]
enable = true
allowed-host-suffixes = ["example.com"]
allowed-cidrs = ["192.0.2.0/24"]

v4.2.0 内置 EnvSecretResolver 只接受 secret://env/...。系统账号的环境变量名必须以 MO_MONGODB_ 开头;租户账号 N 必须使用 MO_MONGODB_ACCOUNT_N_ 前缀。变量值是严格 JSON,字段名必须为小写 usernamepassword

export MO_MONGODB_DOCS_CREDENTIAL='{"username":"docs_reader","password":"replace-me"}'

系统账号在 DDL 中使用 secret://env/MO_MONGODB_DOCS_CREDENTIAL。多 CN 部署必须在所有可能规划或执行外表扫描的 CN 进程中设置相同变量,通过部署的 secret 机制分发,并一致滚动重启。环境变量 resolver 适合本地或受控部署;生产 secret-manager 集成必须实施相同的账号命名空间隔离。不要把凭据写入 hostssrv_hostoptions_json

语法

CREATE MONGODB CONNECTION connection_name WITH ("option" = 'value' [, "option" = 'value'] ...)

参数

选项

说明

hosts

条件必填。逗号分隔的 host:port 种子服务器列表,不能与 srv_host 同时指定。

srv_host

条件必填。不含用户信息、路径和端口的 DNS SRV 主机,不能与 hosts 同时指定。

replica_set

可选。副本集名称。

auth_source

可选。认证数据库,默认为 admin

auth_mechanism

可选。认证机制,默认为 SCRAM-SHA-256

credential_secret_ref

必填。v4.2.0 中使用账号作用域环境引用,例如 secret://env/MO_MONGODB_DOCS_CREDENTIAL

tls_mode

可选。TLS 模式,默认为 required

tls_ca_secret_ref

可选。对已存储 CA 证书密钥的引用。

read_preference

可选。读偏好,默认为 secondaryPreferred

read_concern

可选。读关注,默认为 majority

max_staleness_seconds

可选。允许的最大复制延迟(秒)。

options_json

可选。包含附加连接选项的 JSON 文档。

示例

CREATE MONGODB CONNECTION docs_mongo WITH (
    "hosts" = 'mongo1.example.com:27017,mongo2.example.com:27017',
    "credential_secret_ref" = 'secret://env/MO_MONGODB_DOCS_CREDENTIAL',
    "replica_set" = 'rs0',
    "read_preference" = 'secondaryPreferred'
);

示例中的主机名是占位符。创建或使用连接前,必须在每个 CN 的 allowed-host-suffixes 中加入 example.com

相关参考