腾讯云
创建腾讯云私有仓库(BYOC)
前置准备
由于 BYOC 模式下的资源都部署在您的云账号中,因此在使用之前需要进行一些前置准备工作,以确保顺利进行资源配置和管理:
- 准备私有网络 VPC 和子网
- 了解资源编排(可选)
创建腾讯云私有仓库
创建仓库引导
在创建仓库引导页或者左上角仓库列表,单击 新建仓库 ,进入仓库配置页,填写表单进行创建。

| 参数 | 说明 |
|---|---|
| 仓库名称 | 必填项。组织内唯一,最多 32 个字符,只支持包含中文、字母、数字、-、_ |
| 仓库模式 | 必选项。私有仓库(BYOC)。 |
| 云厂商 | 必选项。选择腾讯云。 |
| 地域 | 必选项。选择希望部署数据仓库在哪个地域。由于异地通信网络架构复杂,而且延时较大,建议选择与你的应用系统/客户端相同的地域。目前,SelectDB Cloud 已支持云平台多个地域,并会根据客户需求情况,陆续支持更多地域。 |
| 内核版本 | 必选项。SelectDB Core 的版本,从 2.0 版本开始,支持存算分离,底层采用共享存储,数据存储性价比高,按实际使用量计费,无需预先配置容量空间。 |
| VPC 环境 | 必选项。第一次新建 BYOC 仓库,默认选择新 VPC,后续步骤会引导你选择云环境中的 VPC,完成新建仓库。如果你之前已在 VPC 内创建过 BYOC 仓库,你可以直接选择这个 VPC 并新建仓库。 |
下表列出了目前支持的腾讯云地域和可用区信息:
| 云平台 | 地域名称 | 地域 ID | 可用区 ID |
|---|---|---|---|
| 腾讯云 | 北京 | ap-beijing | 3, 6, 7 |
| 腾讯云 | 上海 | ap-shanghai | 2, 5, 8 |
| 腾讯云 | 广州 | ap-guangzhou | 6, 7 |
| 腾讯云 | 新加坡 | ap-singapore | 1, 2, 3, 4 |
点击 下一步。
腾讯云前置准备
在正式创建前,参照说明文档完成前置准备:
- 准备私有网络 VPC 和子网
- 了解资源编排(可选)
点击我已完成进入下一步。

创建 BYOC 仓库 · ① 腾讯云前置准备(CAM 授权 / 准备 VPC 子网 / 了解 Terraform 资源编排)
腾讯云资源配置
SelectDB Cloud 会使用腾讯云的 Terraform 模版创建一系列资源并完成用户 VPC 内私有仓库的创建工作。
请使用管理员权限执行 Terraform 模版,或者是联系管理员为你执行这个 Terraform 模版,否则可能会遇到因权限不足导致执行模板失败的情况。
点击复制图标,复制命令

创建 BYOC 仓库 · ② 云资源配置(跳转腾讯云 → 复制 CloudShell 构建命令;Token 已脱敏)
点击"打开 CloudShell 页面",在 CloudShell 中执行刚刚复制的命令。

腾讯云 CloudShell · 执行命令 + 按引导输入 VPC / 子网 / Bucket 信息 → Terraform 初始化
您需要在腾讯云保持登录状态才能正常打开 CloudShell,如果仍然在进入 CloudShell 时报错,请尝试重新登录。
按照 CloudShell 中的模板引导,输入 VPC、子网信息,等待部署完成。

腾讯云 CloudShell · Terraform 部署日志(创建 CVM/COS/安全组/终端节点,Apply complete! 15 added)
仓库初始化
系统进行仓库初始化,约需 5-10 分钟。如遇到仓库初始化 30 分钟以上,或其他无法继续的情形,请 联系客服 寻求帮助。

新建集群
在新建集群引导页或者集群概览页,单击 新建集群 ,进入集群配置页。详细操作请参照 新建集群。

BYOC 仓库创建完成 · 集群概览(initial_cluster 运行中 · 4 vCPU / 100 GB 缓存)
开放公网连接和访问
仓库创建完成后,如果需要在公网连接仓库、访问 WebUI 等,需要在腾讯云绑定公网 IP 和设置安全组。
绑定公网 IP
点击连接,复制 Master IP。
进入 腾讯云实例控制台 ,点击左侧 实例与镜像 > 实例,搜索过滤 IP,确认 私有网络 无误。
点击 操作 > 更多 > IP/网卡 > 绑定弹性IP。
如果没有公网 IP 可用,可选择 创建公网 IP 后,继续绑定。
创建公网 IP: 点击申请,选择 IP 地址类型、所属地域、付费模式、带宽、名称等,勾选同意,点击确定,完成创建公网IP。
设置安全组
进入 腾讯云安全组控制台 ,点击 新建。
模板选择自定义,输入安全组名称,点击确定,并立即设置安全组。
点击 入站规则 > 添加规则,类型选择自定义,来源选择IP 地址或 CIDR 段,并输入可连接访问 SelectDB 仓库的公网 IP(建议设置最小化范围),协议端口输入 TCP:8080,8088,9030,点击确定
切换到关联实例标签页,点击新增关联,勾选 Master IP 对应实例,点击确定,完成安全组设置。
返回 SelectDB Cloud 连接页面,点击 Master IP 公网刷新图标。
至此,您已可以通过公网访问 WebUI 和连接仓库。
仓库使用
仓库的使用操作,以及如果需要删除仓库,请参考文档 仓库使用。
腾讯云前置准备
本文主要介绍创建 BYOC 类型仓库涉及的腾讯云平台相关操作,包括 准备私有网络 VPC 和子网、了解资源编排 等。
准备私有网络 VPC 和子网
提示:
- 如果已有符合地域和可用区要求的 VPC 和子网,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建私有网络 VPC 和子网步骤。
- 当前支持的地域和子网可用区为:
| 云平台 | 地域名称 | 地域 ID | 可用区 ID |
|---|---|---|---|
| 腾讯云 | 北京 | ap-beijing | 3, 6, 7 |
| 腾讯云 | 上海 | ap-shanghai | 2, 5, 8 |
| 腾讯云 | 广州 | ap-guangzhou | 6, 7 |
| 腾讯云 | 新加坡 | ap-singapore | 1, 2, 3, 4 |
创建 BYOC 类型仓库前,如果没有符合要求的已有 VPC 和子网,则需要提前创建私有网络 VPC 和子网,以下是具体操作。
打开腾讯云 私有网络 VPC 控制台,切换到您期望创建 BYOC 仓库的地域,点击 新建,进入 VPC 创建页面。

腾讯云 · 创建私有网络 VPC(地域 / 名称 / IPv4 CIDR + 子网名称 / 可用区)
输入名称、选择 IPv4 CIDR,子网名称,子网 IPv4 CIDR,子网可用区,点击确定完成创建。

腾讯云 · VPC + 子网信息填写完成,点「确定」创建
了解资源编排(可选)
在您的云账号下通过 CloudShell 执行 Terraform 模板时,会对 VPC、CVM、COS 等云资源进行相关操作,因此需要一系列 CAM 权限。
请使用管理员权限执行 Terraform 模版,或者是联系管理员为你执行这个 Terraform 模版,否则可能会遇到因权限不足导致执行模板失败的情况。
Terraform 模板说明
SelectDB 提供的 Terraform 资源编排模板运行在您的腾讯云账号下,并且模版代码可见、可审计,不会对您的数据与 VPC 内的其他环境进行操作。您可以通过以下链接获取 SelectDB 提供的 Terraform 模板:
https://online-bj-1313869400.cos.ap-beijing.myqcloud.com/public/txcloud-byoc.tf
Terraform 模板创建出的资源
当您通过腾讯云 CloudShell 运行 Terraform 模板时,会创建以下资源:
- 虚拟机
- 名称:SelectDBAgent(CVM)
- 用途:用于部署 Agent,Prometheus,FluentBit 等程序
- 终端节点
- 名称:SelectDBEndpoint(VPC Endpoint)
- 用途:与 SelectDB Cloud 平台建立私网连接,从而可以拉取管控指令、推送监控和日志
- 存储桶
- 名称:SelectDBBucket(COS Bucket)
- 用途:存储数仓数据
- 安全组
- 名称:SelectDBSecurityGroupForEndpoint,SelectDBSecurityGroup(VPC SecurityGroup)
- 用途:分别绑定在终端节点和 SelectDB 创建出的所有 CVM 实例,并通过安全组规则限定特定端口特定来源的流量出站入站
- 子用户/角色
- 名称:(CAM User / CAM Role)
- SelectDBUser(子用户),SelectDBUserAccessKey(aksk),SelectDBUserPolicy(子用户权限)
- SelectDBControlPlaneRole(管控侧角色),SelectDBControlPlaneRolePolicy(管控侧角色权限),SelectDBDataAccessRole(内核侧角色),SelectDBDataAccessRolePolicy(内核侧角色权限)
- 用途:
- 创建出的子用户具备 Agent 所需的最小权限策略,之后进行的所有管控操作均使用该子用户的身份进行操作
- 创建出的角色将会绑定到 CVM 实例,通过该角色可以获取临时凭据,相较于使用永久 ak/sk 的方式更加安全
注意: 您可以通过查看 terraform.tfstate 状态文件查看创建出的所有资源详情。请勿修改该文件,否则在进行更新或销毁时可能会因状态信息缺失而失败,导致资源泄露。
Terraform 模板创建的子用户的权限说明
初次执行完 Terraform 模板后会创建一个子用户,用于后续在您的 VPC 内管控数据仓库相关组件,以下为该子用户权限示例以及说明:
注意 创建出来的子用户隶属于您的云账号,并只在您的 VPC 内使用,不会外泄。
{
"statement": [
{
"action": [
"cvm:DescribeInstances",
"cvm:DescribeInstanceAttributes",
"cvm:InquiryPriceRunInstances",
"cvm:StartInstances",
"cvm:StopInstances",
"cvm:RebootInstances",
"cvm:TerminateInstances",
"cvm:ModifyInstancesChargeType",
"cvm:AttachCbsStorages",
"cvm:DetachCbsStorages",
"cvm:ModifyCbsStorageAttributes",
"cvm:AttachDisks",
"cvm:DetachDisks",
"cvm:RenewDisk",
"cvm:ResizeDisk",
"clb:DescribeLoadBalancers",
"clb:DescribeLoadBalancersDetail",
"clb:InquiryPriceRefundLoadBalancer",
"clb:InquiryPriceRenewLoadBalancer",
"clb:DescribeListeners",
"clb:DescribeLBListeners",
"clb:CreateListener",
"clb:CreateLoadBalancerListeners",
"clb:SetLoadBalancerStartStatus",
"clb:DeleteListener",
"clb:DeleteLoadBalancerListeners",
"clb:DescribeTargets",
"clb:DescribeTargetGroupInstances",
"clb:RegisterTargets",
"clb:DeregisterTargets",
"clb:CreateRule",
"clb:CreateListenerRules",
"clb:DeleteRule",
"clb:SetSecurityGroupForLoadbalancers",
"clb:SetLoadBalancerSecurityGroups"
],
"condition": {
"for_any_value:string_equal": {
"qcs:resource_tag": [
"resource-created-by&selectdb"
]
}
},
"effect": "allow",
"resource": [
"qcs::cvm:::*",
"qcs::clb:::*"
]
},
{
"action": [
"cvm:RunInstances",
"cvm:PurgeInstances",
"cvm:RenewInstances",
"cvm:ViewModifyInstancesAttribute",
"cvm:ModifyInstancesAttribute",
"cvm:ResetInstancesType",
"cvm:DescribeSecurityGroups",
"cvm:DescribeSecurityGroupPolicys",
"cvm:CreateSecurityGroup",
"cvm:CreateSecurityGroupPolicy",
"cvm:ModifySecurityGroupPolicys",
"cvm:ModifySecurityGroupAttributes",
"cvm:AssociateSecurityGroups",
"cvm:DisassociateSecurityGroups",
"cvm:DeleteSecurityGroup",
"cvm:DeleteSecurityGroupPolicy",
"cvm:CreateCbsStorages",
"cvm:ResizeCbsStorage",
"cvm:DescribeDisks",
"cvm:CreateDisks",
"cvm:ModifyDiskAttributes",
"vpc:DescribeVpcEx",
"vpc:DescribeSubnet",
"vpc:DescribeSubnetEx",
"vpc:ModifyVpcEndPointAttribute",
"clb:DescribeTaskStatus",
"clb:InquiryPriceCreateLoadBalancer",
"clb:CreateLoadBalancer",
"clb:DeleteLoadBalancer",
"clb:DeleteLoadBalancers",
"clb:DescribeLoadBalancerListeners",
"clb:DescribeTargetGroups",
"clb:DescribeTargetGroupList",
"clb:CreateTargetGroup",
"clb:ModifyTargetGroupAttribute",
"clb:DeleteTargetGroups",
"clb:BatchRegisterTargets",
"clb:BatchDeregisterTargets",
"clb:RegisterTargetGroupInstances",
"clb:DeregisterTargetGroupInstances",
"clb:AssociateTargetGroups",
"clb:DisassociateTargetGroups",
"clb:RegisterInstancesWithLoadBalancer",
"clb:DeregisterInstancesFromLoadBalancer",
"clb:ModifyRule",
"clb:SetSecurityGroups",
"tag:TagResources",
"tag:UnTagResources"
],
"effect": "allow",
"resource": [
"*"
]
},
{
"action": [
"finance:*"
],
"effect": "allow",
"resource": [
"qcs::cvm:::*",
"qcs::clb:::*"
]
},
{
"action": [
"cos:*"
],
"effect": "allow",
"resource": [
"qcs::cos::uid/*:selectdb-bucket-*",
"qcs::cos::uid/*:selectdb-bucket-*/*"
]
},
{
"action": [
"cam:PassRole"
],
"effect": "allow",
"resource": [
"qcs::cam::uin/*:roleName/selectdb-data-access-role-*"
]
}
],
"version": "2.0"
}
具体权限划分如下:
- CVM 权限:
- 管理 CVM 实例
YAML "cvm:DescribeInstances", "cvm:DescribeInstanceAttributes", "cvm:InquiryPriceRunInstances", "cvm:RunInstances", "cvm:StartInstances", "cvm:StopInstances", "cvm:PurgeInstances", "cvm:RebootInstances", "cvm:TerminateInstances", "cvm:RenewInstances", "cvm:ViewModifyInstancesAttribute", "cvm:ModifyInstancesAttribute", "cvm:ModifyInstancesChargeType", "cvm:ResetInstancesType", "cvm:CreateCbsStorages", "cvm:AttachCbsStorages", "cvm:DetachCbsStorages", "cvm:ResizeCbsStorage", "cvm:ModifyCbsStorageAttributes", "cvm:DescribeDisks", "cvm:CreateDisks", "cvm:AttachDisks", "cvm:DetachDisks", "cvm:RenewDisk", "cvm:ResizeDisk", "cvm:ModifyDiskAttributes", - 管理 CVM 安全组
YAML "cvm:DescribeSecurityGroups", "cvm:DescribeSecurityGroupPolicy", "cvm:CreateSecurityGroup", "cvm:CreateSecurityGroupPolicy", "cvm:ModifySecurityGroupAttributes", "cvm:ModifySingleSecurityGroupPolicy", "cvm:ModifySecurityGroupPolicys", "cvm:AssociateSecurityGroups", "cvm:DisassociateSecurityGroups", "cvm:DeleteSecurityGroup", "cvm:DeleteSecurityGroupPolicy", - 管理标签
YAML "tag:TagResources", "tag:UnTagResources" - VPC & CLB 权限:
- 获取 VPC 相关资源信息
YAML "vpc:DescribeVpcEx", "vpc:DescribeSubnet", "vpc:DescribeSubnetEx", - 管理负载均衡器 CLB 资源
YAML "clb:DescribeTaskStatus", "clb:DescribeLoadBalancers", "clb:DescribeLoadBalancersDetail", "clb:InquiryPriceCreateLoadBalancer", "clb:InquiryPriceRefundLoadBalancer", "clb:InquiryPriceRenewLoadBalancer", "clb:CreateLoadBalancer", "clb:DeleteLoadBalancer", "clb:DeleteLoadBalancers", "clb:DescribeListeners", "clb:DescribeLBListeners", "clb:DescribeLoadBalancerListeners", "clb:CreateListener", "clb:CreateLoadBalancerListeners", "clb:SetLoadBalancerStartStatus", "clb:DeleteListener", "clb:DeleteLoadBalancerListeners", "clb:DescribeTargets", "clb:DescribeTargetGroupInstances", "clb:RegisterTargets", "clb:DeregisterTargets", "clb:DescribeTargetGroups", "clb:DescribeTargetGroupList", "clb:CreateTargetGroup", "clb:ModifyTargetGroupAttribute", "clb:DeleteTargetGroups", "clb:BatchRegisterTargets", "clb:BatchDeregisterTargets", "clb:RegisterTargetGroupInstances", "clb:DeregisterTargetGroupInstances", "clb:AssociateTargetGroups", "clb:DisassociateTargetGroups", "clb:RegisterInstancesWithLoadBalancer", "clb:DeregisterInstancesFromLoadBalancer", "clb:CreateRule", "clb:CreateListenerRules", "clb:ModifyRule", "clb:DeleteRule", "clb:SetSecurityGroups", "clb:SetSecurityGroupForLoadbalancers", "clb:SetLoadBalancerSecurityGroups" - Finance 权限:
- 允许购买 CVM 和 LB 资源
YAML { "action": [ "finance:*" ], "effect": "allow", "resource": [ "qcs::cvm:::*", "qcs::clb:::*" ] }, - COS 权限:
- 管理 COS 存储桶以及对存储桶及其内容进行读写操作(针对特定桶)
YAML { "action": [ "cos:*" ], "effect": "allow", "resource": [ "qcs::cos::uid/*:selectdb-bucket-*", "qcs::cos::uid/*:selectdb-bucket-*/*" ] }, - CAM 权限:
- 允许将刚建出来的内核侧数据访问角色传递给虚机(MS/FE/BE)
YAML { "action": [ "cam:PassRole" ], "effect": "allow", "resource": [ "qcs::cam::uin/*:roleName/selectdb-data-access-role-*" ] }