跳到主要内容

创建数据源

在 NineData 中创建一个新的数据库连接配置。

请求地址:/openapi/v1/datasource/create

请求方法:POST

请求参数

参数类型是否必选说明示例
datasourceTypeString数据源类型。使用目标 NineData 环境已启用的 DatasourceType 值;取值大小写不敏感,建议沿用产品中展示的拼写。MONGODB
nameString指定数据源名称。生产环境 MongoDB
usernameString条件必填数据库账号;必填条件取决于数据源类型。root
passwordString条件必填数据库密码;必填条件与 username 相同。Root
hostString数据源的连接地址。MongoDB 单机模式传入 IP 或域名;副本集或分片集群传入 host1:port1,host2:port2 格式的拼接字符串。192.168.1.1
portInteger数据源的端口号。MongoDB 单机模式需填写;MongoDB 副本集或分片集群模式不填,端口信息写在 host 中。27017
envIdString所属环境。可通过查询环境信息获取;不传默认 env-devenv-product
regionIdString为该数据源指定所属地域。您需要调用查询地区信息接口获取 regionId以获取到的 regionId 为准
networkTypeString连接方式,默认 public。取值:publicgatewaysshprivatepublic
masterNameString主节点名称,适用于包含主节点的数据源。master-1
hostAndPortsString逗号分隔的多节点 host:port 组合,例如 Redis Sentinel 或 Cluster。host1:port1,host2:port2
instanceIdString云实例 ID。instance-001
instanceTypeString实例类型。RDS
cloudInstanceTypeString云实例接入类型。instance
vendorRegionIdString云厂商地域 ID。cn-hangzhou
serverVersionString数据库服务版本。8.0
gatewayIdString网关 ID,networkTypegateway 时使用。gateway-001
tunnelIdString私网连接 ID。tunnel-001
accessIdString云厂商访问凭证 ID。access-001
envString环境标识,由请求参数决定。product
sshConfigObjectSSH 连接配置,networkTypessh 时使用。{}
multiTagString多活标记。创建接口不会写入该字段,请通过修改接口设置。active
extraConfigObject数据源专属配置。不同类型数据源的专有参数放在该对象中。{"authDB":"admin"}
sslConfigObjectSSL 配置。当前仅 MySQL、SQLServer、PostgreSQL 支持;MongoDB 不支持传入该字段。{"securityConfig":"PREFERRED"}

可用的数据源类型随版本和部署环境而异。传入目标环境未启用的值时,接口返回 INVALID_PARAMETER

创建 DataHub 数据源时,如果传入 accessId,NineData 会使用该凭证中的 AccessKey 和 AccessKeySecret,覆盖请求中的 usernamepassword

MongoDB 专属 extraConfig 参数

参数类型是否必选默认值说明示例
mongoDBDeploymentTypeStringstandaloneMongoDB 部署类型。取值:standalone(单机)、replicaSet(副本集)、shardedCluster(分片集群)。replicaSet
authDBString-认证数据库。admin
readPreferenceString-读取偏好。取值:primaryprimaryPreferredsecondarysecondaryPreferrednearestsecondaryPreferred
replicaSetString-副本集名称。MongoDB 副本集模式下可传入该参数。rs0
clusterObject-显式指定 MongoDB 副本集/分片集群的拓扑信息。传入该对象后,以下字段均为必填(available 除外)。{"clusterId":"cluster-1","nodeList":[...]}
cluster.clusterIdString-集群的 ID。cluster-1
cluster.nodeListArray-集群节点列表。-
cluster.nodeList[].nodeIdString-节点的 ID。node-1
cluster.nodeList[].nodeHostString-主机名。mongo-0
cluster.nodeList[].nodePortInteger-端口。27017
cluster.nodeList[].connectHostString-连接地址。192.168.1.10
cluster.nodeList[].connectPortString-连接端口。27017
cluster.nodeList[].clusterIdString-节点所属集群的 ID。cluster-1
cluster.nodeList[].availableStringTRUE是否可用。TRUE

SSL 配置参数

仅 MySQL、SQLServer、PostgreSQL 数据源支持传入 sslConfig。不同数据源类型支持的字段不同。

参数类型是否必选适用数据源说明示例
securityConfigStringMySQL、PostgreSQLSSL 安全模式。MySQL 取值:REQUIREDPREFERRED;PostgreSQL 取值:PreferRequireVerify-CAVerify-FullPREFERRED
sslCipherStringMySQLSSL 加密套件。TLS_AES_256_GCM_SHA384
sslCAStringMySQL、SQLServer、PostgreSQLCA 证书内容。-----BEGIN CERTIFICATE-----
sslCAFileNameStringMySQL、SQLServer、PostgreSQLCA 证书文件名。ca.pem
sslClientCertStringMySQL、PostgreSQL客户端证书内容。-----BEGIN CERTIFICATE-----
sslClientCertFileNameStringMySQL、PostgreSQL客户端证书文件名。client-cert.pem
sslClientKeyStringMySQL、PostgreSQL客户端私钥内容。-----BEGIN PRIVATE KEY-----
sslClientKeyFileNameStringMySQL、PostgreSQL客户端私钥文件名。client-key.pem
sslIndentifyBooleanMySQL是否校验服务器身份。字段名请按接口使用 sslIndentifyfalse
hostNameInCertificateStringSQLServer服务器证书中的主机名。db.example.com
trustServerCertificateBooleanSQLServer是否信任服务器证书。false

请求示例

MongoDB 单机版:

{
"name": "生产环境 MongoDB",
"username": "root",
"password": "Root",
"host": "192.168.1.10",
"port": 27017,
"datasourceType": "MongoDB",
"regionId": "aliyun-cn-hangzhou",
"envId": "env-product",
"networkType": "public",
"extraConfig": {
"mongoDBDeploymentType": "standalone",
"authDB": "admin"
}
}

MySQL SSL:

{
"name": "生产环境 MySQL",
"username": "root",
"password": "Root",
"host": "192.168.1.10",
"port": 3306,
"datasourceType": "MYSQL",
"regionId": "aliyun-cn-hangzhou",
"envId": "env-product",
"networkType": "public",
"sslConfig": {
"securityConfig": "PREFERRED",
"sslIndentify": false
}
}

MongoDB 副本集版:

{
"name": "生产环境 MongoDB 副本集",
"username": "root",
"password": "Root",
"host": "192.168.1.10:27017,192.168.1.11:27017",
"datasourceType": "MongoDB",
"regionId": "aliyun-cn-hangzhou",
"envId": "env-product",
"networkType": "public",
"extraConfig": {
"mongoDBDeploymentType": "replicaSet",
"authDB": "admin",
"readPreference": "secondaryPreferred",
"replicaSet": "rs0"
}
}

返回参数

参数类型说明示例
successBool接口调用是否成功。返回值:truefalsetrue
requestIdString请求 ID。Mi6y0FCN-BHEEaHAnCFFp9DFdAAk0OUZ
dataObject创建的数据源详情,包含数据源 ID(datasourceId)信息。{
"datasourceId": "ds-d92r4i7z1a90"
}

调用成功示例

{
"success": true,
"requestId": "Uf0f0KQB-BHEEjCWnCGHo9FSdCBi1GPC",
"data": {
"datasourceId": "ds-d92r4i7z1a90"
}
}