RDBMS‐Management‐Guide(KR) - cloud-barista/cb-spider GitHub Wiki

RDBMS Management Guide

Language: English | 한국어


※ CB-Spider Database Infrastructure 제공 개요

  • CB-Spider는 멀티 클라우드의 관리형 Database를 제어할 수 있는 동일한 인터페이스를 제공합니다.
  • CB-Spider의 Database(DB)는 RDBMS와 NoSQL로 구분됩니다:
    • RDBMS: MySQL, MariaDB, PostgreSQL 등 — RDBMS 배포 API의 DBEngine 값으로 선택
    • NoSQL: MongoDB, Redis, Cassandra 등 — 추후 제공 예정
  • DBSpec(Database Spec) 제공: DB 종류와 무관하게 DB 인스턴스 생성 시 필요한 스펙 목록 및 정보(vCPU, Memory 등)를 제공합니다.

1. CB-Spider RDBMS 개요

  • CB-Spider는 여러 CSP의 관리형 RDBMS를 동일한 인터페이스로 제어할 수 있는 기능을 제공합니다.
  • CB-Spider가 제공하는 RDBMS는 MySQL(DBEngine=mysql)과 MariaDB(DBEngine=mariadb)를 제공합니다.
  • 본 가이드는 주로 MySQL 엔진(DBEngine=mysql)을 중심으로 다음 기능을 기술합니다.
    • RDBMS 메타정보 조회(지원 버전/스토리지/옵션)
    • RDBMS 인스턴스 생성/조회/삭제
    • RDBMS 인스턴스 내부 데이터베이스 생성/목록/삭제
    • 기존 CSP RDBMS 인스턴스 등록/해제 및 CSP 직접 삭제
    • ※ 표준 SQL 기반의 내부 데이터베이스 관리를 제공하지 않는 CSP들 존재로 부득이 추상화된 내부 데이터베이스 관리 API를 제공함

1.1 용어 정의

  • DBEngine: CB-Spider가 지원하는 DB 엔진 종류(mysql, mariadb)를 구분하는 값으로, RDBMS 메타정보·DBSpec·인스턴스 등 대부분의 API가 이 값으로 대상 엔진을 식별합니다.
  • DBSpec: CB-Spider가 CSP·Region·DBEngine별로 제공하는 DB 인스턴스 스펙 정보입니다. (예: db.t3.medium) VCpu, Memory, Storage 크기 범위 등 세부 내용은 DB Spec Info Guide 참고
  • RDBMS 인스턴스: CSP에 생성되는 관리형 RDBMS 서버 단위 리소스입니다. (예: 하나의 MySQL Managed DB 서버)
  • 데이터베이스(Database): RDBMS 인스턴스 내부에서 생성/삭제되는 논리적 DB 단위입니다.
  • RDBMS 메타정보: RDBMS 인스턴스 생성 전에 참고하는 CSP별 지원 정보입니다. (예: 지원 엔진 버전, 스펙, 스토리지 타입, Subnet/보안그룹 요구사항)

1.2 CSP별 대상 서비스 및 Console

CB-Spider가 추상화하는 각 CSP의 실제 관리형 DB 서비스명과 Console 링크입니다. 일부 CSP는 Console이 프로젝트/리전 컨텍스트에 따라 달라져 고정된 딥링크를 제공하지 않으며, 이 경우 로그인 후 메뉴 경로를 안내합니다.

CSP MySQL MariaDB Console
AWS Amazon RDS (MySQL) Amazon RDS (MariaDB) console.aws.amazon.com/rds Databases 메뉴로 접근
Azure Azure Database for MySQL – Flexible Server 미지원 portal.azure.com 로그인 후 "Azure Database for MySQL flexible servers" 검색
GCP Cloud SQL for MySQL 미지원 console.cloud.google.com/sql/instances
Alibaba ApsaraDB RDS (MySQL) ApsaraDB RDS (MariaDB) rdsnext.console.aliyun.com (리전별 경로)
Tencent TencentDB for MySQL TencentDB for MariaDB (현재 CB-Spider 미지원) console.tencentcloud.com/cdb
IBM IBM Cloud Databases for MySQL (Gen1) 미지원 cloud.ibm.com/databases-overview/resources
OpenStack Horizon Database(MySQL) Horizon Database(MariaDB) Horizon: Project → Database → Instances 메뉴로 접근
NCP Cloud DB for MySQL 미지원 console.ncloud.com 로그인 후 Services → Database → Cloud DB for MySQL
NHN RDS for MySQL RDS for MariaDB console.nhncloud.com 로그인 후 Project 선택 Database → RDS for MySQL / Database → RDS for MariaDB

2. CB-Spider RDBMS 설정

  • RDBMS 사전 확인: CSP Console에서 관리형 RDBMS 서비스 사용 enable 및 권한 설정 확인 필요
    • NHN: RDS for MySQL과 RDS for MariaDB는 별도의 서비스로, 프로젝트별로 각각 활성화 필요
  • RDBMS 인증 발급: CSP별 RDBMS 인증 정보 발급
  • RDBMS 인증 등록: CB-Spider Connection의 Credential 정보에 RDBMS 인증 추가 설정 필요
    • 기존 Credential과 동일하여 추가 인증 정보가 불필요한 CSP

      [AWS/Azure/GCP/Alibaba/Tencent/IBM/OpenStack/NCP]
      
    • 기존 Credential에 RDBMS 인증 정보 추가가 필요한 CSP

      [NHN]
      
      [NHN]
          ... 기존 Credential 정보 ...
      
          {"Key": "User Access Key",   "Value": "WWWW"},
          {"Key": "Secret Access Key", "Value": "XXXX"},
          {"Key": "mysqlAppKey",       "Value": "YYYY"},
          {"Key": "mariadbAppKey",     "Value": "ZZZZ"}
      

3. RDBMS 인스턴스 생성 구성 요소

  • RDBMS 인스턴스 생성 시 핵심 입력 항목은 다음과 같습니다.

    • 기본 식별: Name, ConnectionName
    • 엔진: DBEngine=mysql|mariadb, DBEngineVersion (형식은 CSP별로 다름)
    • 사양/스토리지: DBSpec, StorageSize, StorageType(선택)
    • 네트워크: VPCName, SubnetNames(일부 CSP 필수), SecurityGroupNames(CSP별 필수 여부·동작이 다름 — 10.5 참고)
    • 인증: MasterUserName, MasterUserPassword
    • 접근/운영 옵션: PublicAccess, HighAvailability, DeletionProtection, BackupRetentionDays
  • 상태 값(RDBMSStatus)

    • Creating, Available, Deleting, Stopped, Error

3.1 DBSpec 정보 조회

  • DBSpec 값(예: db.t3.medium)은 CB-Spider가 별도의 DB Spec 조회 API(GET /spider/dbspec, GET /spider/dbspec/{Name})를 통해 CSP·Region·DBEngine별로 제공하며, 각 DB Spec의 VCpu(Count/ClockGHz), MemSizeMiB, StorageSizeRangeGB(생성 시 요청 가능한 스토리지 크기 범위) 등을 함께 확인할 수 있습니다.
  • RDBMS 인스턴스 생성 전에 이 API로 대상 CSP·Region·DBEngine에서 사용 가능한 DBSpec 목록과 각 스펙의 자원 규모를 먼저 조회하는 것을 권장합니다.
  • 세부 내용(API 규격, 응답 필드, 예시 등)은 DB Spec Info Guide 문서를 참고하세요.

4. MySQL 제공 및 검증 현황

4.1 기본 기능 검증 (test/rdbms-mysql-test 기준)

  • 멀티 CSP 병렬 테스트 스크립트에서 MySQL 생성/조회/삭제를 검증합니다.
  • 기본 테스트 인스턴스명: cb-spider-mysql-test
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: rdbms-mysql-test README
CSP MySQL Version Spec 예시 Storage 예시 네트워크 비고
AWS 8.0 db.t3.medium 100GB 서로 다른 AZ의 Subnet 2개 필요, SecurityGroup 필요
Azure 8.0.21 Standard_B1ms 20GB PublicAccess=true(기본값)면 Subnet 미사용, false면 Subnet 필요 — 10.7 참고
GCP 8.0 db-custom-2-8192 20GB Subnet 미사용
Alibaba 8.0 mysql.n4.large.1 20GB Subnet 필요
Tencent 8.0 8000(MB) 50GB Subnet 필요, SecurityGroup 선택
IBM 8.4 multitenant 30GB Subnet 미사용
OpenStack 5.7.29 m1.small 20GB Subnet 미사용
NCP 8.0.36 SVR.VDBAS... CSP 관리 Subnet 필요
NHN MYSQL_V8408 m2.c2m4 20GB Subnet 필요

4.2 CSP별 StorageType 설정 검증 (test/storage-type-test 기준)

  • CSP별로 지정 가능한 StorageType 값을 실제 생성 요청에 넣어 검증하는 병렬 테스트 스위트입니다.
  • Azure, IBM, NCP는 SupportsStorageTypeSelection=false라 테스트 대상에서 제외(SKIP)됩니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: storage-type-test README
CSP 검증된 StorageType 비고
AWS gp2, gp3, io1, io2, standard io1/io2는 Iops 필드 필수(최소 3000), StorageSize 최소 100GB
GCP PD_SSD, PD_HDD, HYPERDISK_BALANCED 머신 시리즈(N2/C4A/N4 등)에 따라 자동 결정되며 직접 지정하지 않음
Alibaba cloud_auto, cloud_essd, cloud_essd2, cloud_essd3, local_ssd essd2/3는 최소 500GB/1500GB 및 별도 스펙 필요, local_ssd는 rds.mysql.* 계열 전용
Tencent local_ssd, CLOUD_HSSD, CLOUD_SSD, CLOUD_PREMIUM -
OpenStack __DEFAULT__, RBD 생성 후 StorageType이 API로 노출되지 않음(Available 여부로만 검증)
NHN General HDD, General SSD -
Azure (선택 불가) SupportsStorageTypeSelection=false — storageSku는 Azure가 자동 설정(read-only)
IBM (선택 불가) SupportsStorageTypeSelection=false — IBM Cloud Databases는 스토리지 타입/미디어 선택 기능 자체가 없으며, StorageSize와 DBSpec(host_flavor)만 설정 가능
NCP (선택 불가) SupportsStorageTypeSelection=false — G3은 SSD 자동 적용

4.3 RDBMS 인스턴스 내부 Database 관리 검증 (test/database-test 기준)

  • 실행 중인 RDBMS 인스턴스 안에서 CreateDatabase / ListDatabases / DeleteDatabase를 검증하는 병렬 테스트 스위트입니다. 9개 CSP 모두 대상입니다.
  • run-all-csp-rdbms-tests.sh로 생성된 인스턴스를 대상으로 실행합니다. 각 테스트는 spidertestdb를 생성하고 목록에서 확인한 뒤 삭제 후 제거 여부를 검증합니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: database-test README
CSP 구현 방식 비고
AWS SQL 직접 실행 MasterUserPassword로 접속해 CREATE/DROP DATABASE 실행
Azure CSP 네이티브 API Azure MySQL Flexible Server SDK
GCP CSP 네이티브 API Google Cloud SQL Admin API
Alibaba CSP 네이티브 API Alibaba Cloud RDS SDK
Tencent CSP 네이티브 API Tencent Cloud MySQL SDK
IBM SQL 직접 실행 MasterUserPassword로 접속해 SQL 실행
OpenStack CSP 네이티브 API OpenStack Trove API
NCP CSP 네이티브 API NCP Cloud MySQL API
NHN CSP 네이티브 API NHN Cloud RDS API

4.4 RDBMS Tag 관리 검증 (test/tag-test 기준)

  • RDBMS 인스턴스에 대해 AddTag / ListTag / GetTag / RemoveTag를 검증하는 병렬 테스트 스위트입니다.
  • RDBMSMetaInfo.SupportsTag=true인 CSP만 대상이며, 나머지 3개 CSP는 제외됩니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: tag-test README
CSP SupportsTag 비고
AWS true ✅ 대상
Azure true ✅ 대상
GCP true ✅ 대상
Alibaba true ✅ 대상
Tencent true ✅ 대상
IBM true ✅ 대상
OpenStack false 제외
NCP false 제외
NHN false 제외

5. MariaDB 제공 및 검증 현황

  • MariaDB 지원 CSP: AWS, Alibaba, OpenStack, NHN
    • Tencent: Tencent 문서 상 MariaDB 상품 존재, API 호출시 미제공 에러 메시지 반환(추후 재확인 필요)
  • MariaDB 미지원 CSP: Azure, GCP, IBM, NCP

5.1 기본 기능 검증 (test/rdbms-mariadb-test 기준)

  • 멀티 CSP 병렬 테스트 스크립트에서 MariaDB 생성/조회/삭제를 검증합니다.
  • 기본 테스트 인스턴스명: cb-spider-mariadb-test
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: rdbms-mariadb-test README
CSP MariaDB Version Spec 예시 Storage 예시 네트워크 비고
AWS 10.6 (조회 결과는 10.6.27) db.t3.medium 100GB 서로 다른 AZ의 Subnet 2개 필요, SecurityGroup 필요
Alibaba 10.6 mariadb.n2.medium.2c (metainfo 동적 조회, 조회 실패 시 rds.mariadb.s4.large로 폴백) 20GB Subnet 필요
OpenStack 10.4 m1.small 20GB Subnet 미사용
NHN MARIADB_V101118 m2.c2m4 20GB Subnet 필요

5.2 CSP별 StorageType 설정 검증 (test/rdbms-mariadb-test/storage-type-test 기준)

  • CSP별로 지정 가능한 StorageType 값을 실제 생성 요청에 넣어 검증하는 병렬 테스트 스위트입니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: storage-type-test README
CSP 검증된 StorageType 비고
AWS gp2, gp3, io1, io2 io1/io2는 Iops 필드 필수(최소 3000) — MySQL과 동일한 제약
Alibaba cloud_essd, cloud_essd2, cloud_essd3 essd2/essd3는 각각 최소 StorageSize 500GB/1500GB 필요
OpenStack __DEFAULT__, RBD Trove는 생성 후 StorageType을 노출하지 않음 (Available=PASS로 판정)
NHN General HDD, General SSD -

5.3 RDBMS 인스턴스 내부 Database 관리 검증 (test/rdbms-mariadb-test/database-test 기준)

  • 실행 중인 MariaDB 인스턴스 안에서 CreateDatabase / ListDatabases / DeleteDatabase를 검증하는 병렬 테스트 스위트입니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: database-test README
CSP 구현 방식 비고
AWS SQL 직접 실행 MasterUserPassword로 접속해 CREATE/DROP DATABASE 실행
Alibaba CSP 네이티브 API Alibaba Cloud RDS SDK
OpenStack CSP 네이티브 API OpenStack Trove API
NHN CSP 네이티브 API MySQL과 동일

5.4 RDBMS Tag 관리 검증 (test/rdbms-mariadb-test/tag-test 기준)

  • MariaDB 이스턴스에 대해 AddTag / ListTag / GetTag / RemoveTag를 검증하는 병렬 테스트 스위트입니다.
  • SupportsTag=true이면서 MariaDB를 지원하는 CSP만 시험 대상입니다.
  • 세부 테스트 절차 및 환경 설정은 다음 문서를 참고하세요: tag-test README
CSP MariaDB 지원 SupportsTag Tag 시험 대상
AWS ✅ true ✅
Alibaba ✅ true ✅
OpenStack ⚠️ (미구축/미시험) false ❌ (SupportsTag로 제외)
NHN ✅ false ❌ (SupportsTag로 제외)

6. CB-Spider RDBMS 인스턴스 관리 API

  • 아래 API는 /spider 경로를 기준으로 사용하며, mysql/mariadb 모두에 동일하게 적용되며, — 요청시 DBEngine 값만 맞게 지정하면 됩니다.
  • 참고: Swagger 가이드 (Swagger-Guide)

6.1 RDBMS 메타 정보 제공

GET    /spider/rdbmsmetainfo                  - RDBMS MetaInfo (ConnectionName, DBEngine)

6.2 기본 RDBMS 인스턴스 관리

POST   /spider/rdbms                         - Create RDBMS
GET    /spider/rdbms?ConnectionName={conn}   - List RDBMS
GET    /spider/rdbms/{Name}?ConnectionName={conn} - Get RDBMS
DELETE /spider/rdbms/{Name}                  - Delete RDBMS (Body에 ConnectionName 필요)

6.3 RDBMS 인스턴스 내부 데이터베이스 관리

POST   /spider/rdbms/{Name}/databases            - Create Database
GET    /spider/rdbms/{Name}/databases            - List Databases
DELETE /spider/rdbms/{Name}/databases/{DBName}   - Delete Database

6.4 기존 RDBMS 등록 및 확장 관리

POST   /spider/regrdbms                       - Register existing CSP RDBMS
DELETE /spider/regrdbms/{Name}                - Unregister RDBMS
DELETE /spider/csprdbms/{Id}                  - Delete CSP RDBMS directly
GET    /spider/getrdbmsowner                  - Get owner VPC by CSP RDBMS ID
GET    /spider/allrdbms                       - List all RDBMS (CB-Spider/CSP/mapped)
GET    /spider/allrdbmsinfo                   - List all RDBMS info
GET    /spider/countrdbms                     - Count all RDBMS
GET    /spider/countrdbms/{ConnectionName}    - Count RDBMS by connection

6.5 RDBMS 클라이언트 보안 접속(TLS) 확인

GET    /spider/rdbms/{Name}/secure-transport  - Get secure transport status (require_secure_transport, TLS 사용 여부, CA 인증서)
  • 대상 인스턴스의 require_secure_transport 설정값, 실제 TLS 사용 여부, 라이브 캡처한 CA 인증서를 확인할 수 있습니다.
  • 서버 인증서의 SAN(Subject Alternative Name) 유무까지 확인해, 클라이언트가 실제로 사용 가능한 가장 강한 SSL 모드를 RecommendedSSLMode(DISABLED/VERIFY_CA/VERIFY_IDENTITY) 필드로 바로 알려줍니다.
  • mysql CLI나 애플리케이션에서 이 인증서로 VERIFY_CA/VERIFY_IDENTITY 모드로 안전하게 접속하는 방법은 RDBMS 보안 접속(TLS) 가이드를 참고하세요.

7. 요청/응답 주요 필드 규격

7.1 MetaInfo 조회 응답 (RDBMSMetaInfo) 주요 필드

필드 설명
DBEngine 요청한 DB 엔진
SupportedVersions 지원하는 엔진 버전 목록
DBSpecOptions 사용 가능한 인스턴스 스펙 목록
StorageTypeOptions 사용 가능한 스토리지 타입 목록
StorageSizeRangeGB 스토리지 크기 범위(Min/Max), 10진 GB(10⁹ byte) 단위. CSP의 네이티브 단위가 2진(GiB)임이 객관적으로 확인된 경우에만 변환됨 — 10.2 참고. 네이티브 단위를 확인할 수 없는 경우에는 변환 없이 그대로 제공되며 DataSourceNotes에 사유가 표시됨
SupportsHighAvailability HA 구성 가능 여부
SupportsBackup 자동 백업 지원 여부
BackupRetentionRange 생성 시 설정 가능한 백업 보관 기간 범위
SupportsPublicAccess Public 접근 설정 가능 여부
SupportsDeletionProtection 삭제 방지(Deletion Protection) 설정 가능 여부
SupportsEncryption 저장소 암호화 지원 여부
SupportsStorageTypeSelection 생성 시 StorageType을 직접 지정할 수 있는지 여부
SupportsStorageSizeConfiguration 생성 시 StorageSize를 직접 지정할 수 있는지 여부
RequiresSubnet 생성 시 SubnetNames 필수 여부
RequiresSecurityGroup 생성 시 SecurityGroupNames 필수 여부 — CSP별 실제 동작은 10.5 참고
SupportsTag 태깅(Tag) 지원 여부 (true: AWS, Azure, GCP, Alibaba, Tencent, IBM / false: NCP, NHN, OpenStack). CSP별로 고정된 값이며, DBEngine이 mysql이든 mariadb이든 동일하게 적용됩니다.
DataSource (선택) 정보 소스가 CSP API 결과가 아닌 경우 "Static"으로 표시대상: SupportedVersions, DBSpecOptions, StorageTypeOptions, StorageSizeRangeGB, StorageSizeRangeGB.Min, StorageSizeRangeGB.Max
DataSourceNotes (선택) DataSource가 "Static"인 사유

예시 응답 (NCP, MySQL — 일부 필드가 Static인 경우)

{
  "DBEngine": "mysql",
  "SupportedVersions": ["8.0.36"],
  "DBSpecOptions": ["SVR.VDBAS.AMD.STAND.C002.M008.NET.SSD.B050.G003"],
  "StorageTypeOptions": ["NA"],
  "StorageSizeRangeGB": { "Min": 10, "Max": 6000 },
  "SupportsHighAvailability": true,
  "SupportsBackup": true,
  "SupportsPublicAccess": false,
  "SupportsDeletionProtection": true,
  "SupportsEncryption": false,
  "SupportsStorageTypeSelection": false,
  "SupportsStorageSizeConfiguration": false,
  "RequiresSubnet": true,
  "RequiresSecurityGroup": false,
  "SupportsTag": false,
  "DataSource": {
    "StorageTypeOptions": "Static",
    "StorageSizeRangeGB": "Static"
  },
  "DataSourceNotes": {
    "StorageTypeOptions": "NCP G3 generation sets storage type (SSD) automatically; not user-selectable or queryable via API.",
    "StorageSizeRangeGB": "NCP has no storage-size query API; range shown (10-6000GB) is a known approximation, not authoritative. No unit conversion is applied because the value is not derived from any CSP-reported unit."
  }
}

이 예시에서 SupportedVersions/DBSpecOptions는 DataSource에 키가 없으므로 실시간 API 값이고, StorageTypeOptions/StorageSizeRangeGB는 "Static"이므로 참고용 고정값임을 알 수 있습니다. CSP별로 어떤 필드가 언제 Static이 되는지는 10. CSP별 특이사항을 참고하세요.

7.2 인스턴스 생성 요청 (RDBMSCreateRequest.ReqInfo) 주요 필드

필드 설명 예시
Name RDBMS 인스턴스 이름 cb-spider-mysql-test
VPCName 대상 VPC 이름 vpc-01
DBEngine DB 엔진 mysql
DBEngineVersion 엔진 버전 8.0
DBSpec 인스턴스 스펙 (세부 내용은 DB Spec Info Guide 참고) db.t3.medium
StorageSize 스토리지 크기(GB) 100
StorageType 스토리지 타입(선택) gp2
SubnetNames 서브넷 목록(일부 CSP 필수; Azure는 10.7처럼 PublicAccess에 따라 달라짐) [subnet-01, subnet-02]
SecurityGroupNames 보안그룹 목록(일부 CSP 필수, CSP별 동작은 10.5 참고) [sg-01]
MasterUserName 관리자 계정 myadmin
MasterUserPassword 관리자 비밀번호 Password123!
PublicAccess Public 접근 여부 true
NHNAutoOpenDBSecurityGroup (NHN 전용, 선택) PublicAccess=true와 함께 설정 시 전체 개방 DB Security Group을 자동 생성/연결. 세부 내용은 10.6 참고 false
HighAvailability HA 사용 여부 false
DeletionProtection 삭제 보호 여부 false
BackupRetentionDays 백업 보관일(선택) 7
Iops IOPS(일부 타입에서 사용) 3000

7.3 인스턴스 조회 응답 (RDBMSInfo) 주요 필드

필드 설명
IId(NameId, SystemId) 사용자 이름 및 CSP 시스템 ID
Status Creating/Available/Deleting/Stopped/Error
Endpoint, Port 데이터베이스 접속 엔드포인트/포트
DBEngine, DBEngineVersion 엔진/버전
DBSpec 인스턴스 스펙 (세부 내용은 DB Spec Info Guide 참고)
StorageSize, StorageType 스토리지 용량/타입
PublicAccess Public 접근 설정
VpcIID, SubnetIIDs, SecurityGroupIIDs 네트워크 식별 정보
KeyValueList CSP 확장 정보

8. RDBMS 인스턴스 운영 절차

이 절차는 mysql/mariadb 요청 모두에 동일하게 적용되며, CSP별 지원 범위만 다릅니다.

  1. RDBMS 메타정보 조회
  • /spider/rdbmsmetainfo로 CSP별 지원 버전, StorageTypeOptions, RequiresSubnet, RequiresSecurityGroup 확인
  • SupportsStorageTypeSelection/SupportsStorageSizeConfiguration이 false인 CSP에는 생성 요청에 StorageType/StorageSize를 포함하지 마세요.
  • DataSource에 "Static"으로 표시된 필드는 CSP 실시간 값이 아닌 참고용 고정값/근사값이므로, 정확한 최신 값이 필요하면 CSP 콘솔/CLI로 다시 확인하세요.
  1. 생성 요청 구성
  • ReqInfo에 필수 값(Name, DBEngine, DBEngineVersion, DBSpec, MasterUserName, MasterUserPassword, StorageSize, VPCName) 설정
  • CSP가 요구하면 SubnetNames/SecurityGroupNames 추가
  1. 생성 및 상태 폴링
  • POST /spider/rdbms 호출 후 GET /spider/rdbms/{Name}?ConnectionName=... 반복 조회
  • CB-Spider가 추상화한 상태값 Available 이 될 때까지 대기
  1. 운영 조회/목록
  • 단건: GET /spider/rdbms/{Name}?ConnectionName=...
  • 목록: GET /spider/rdbms?ConnectionName=...
  1. 내부 데이터베이스 관리
  • 데이터베이스 목록/생성/삭제 API 활용
  • CSP/드라이버의 내부 구현 경로에 따라 MasterUserPassword를 추가로 요구할 수 있음 — Create/Delete(POST/DELETE)는 요청 본문(Body), List(GET)는 X-Master-User-Password 헤더로 전달
  1. 인스턴스 삭제
  • DELETE /spider/rdbms/{Name} 호출 시 Body에 ConnectionName 전달
  • 삭제 완료까지 폴링 조회 권장

9. API 호출 예시 (RDBMS 인스턴스 기준)

9.1 MetaInfo 조회

curl -u admin:your-secure-password -sX GET \
  "http://localhost:1024/spider/rdbmsmetainfo?ConnectionName=aws-config01&DBEngine=mysql" | jq

9.2 MySQL 생성 (AWS 예시)

curl -u admin:your-secure-password -sX POST http://localhost:1024/spider/rdbms \
  -H 'Content-Type: application/json' \
  -d '{
    "ConnectionName": "aws-config01",
    "ReqInfo": {
      "Name": "cb-spider-mysql-test",
      "VPCName": "vpc-01",
      "DBEngine": "mysql",
      "DBEngineVersion": "8.0",
      "DBSpec": "db.t3.medium",
      "StorageSize": "100",
      "SubnetNames": ["subnet-01", "subnet-02"],
      "SecurityGroupNames": ["sg-01"],
      "MasterUserName": "myadmin",
      "MasterUserPassword": "Password123!",
      "PublicAccess": true
    }
  }' | jq

9.3 MariaDB 생성 (AWS 예시)

curl -u admin:your-secure-password -sX POST http://localhost:1024/spider/rdbms \
  -H 'Content-Type: application/json' \
  -d '{
    "ConnectionName": "aws-config01",
    "ReqInfo": {
      "Name": "cb-spider-mariadb-test",
      "VPCName": "vpc-01",
      "DBEngine": "mariadb",
      "DBEngineVersion": "10.6",
      "DBSpec": "db.t3.medium",
      "StorageSize": "100",
      "SubnetNames": ["subnet-01", "subnet-02"],
      "SecurityGroupNames": ["sg-01"],
      "MasterUserName": "myadmin",
      "MasterUserPassword": "Password123!",
      "PublicAccess": true
    }
  }' | jq

9.4 RDBMS 인스턴스 단건 조회

curl -u admin:your-secure-password -sX GET \
  "http://localhost:1024/spider/rdbms/cb-spider-mysql-test?ConnectionName=aws-config01" | jq

9.5 내부 DB 생성/목록/삭제

# Create Database
curl -u admin:your-secure-password -sX POST \
  http://localhost:1024/spider/rdbms/cb-spider-mysql-test/databases \
  -H 'Content-Type: application/json' \
  -d '{
    "ConnectionName": "aws-config01",
    "DatabaseName": "mydb",
    "MasterUserPassword": "Password123!"
  }' | jq

# List Databases
curl -u admin:your-secure-password -sX GET \
  "http://localhost:1024/spider/rdbms/cb-spider-mysql-test/databases?ConnectionName=aws-config01" \
  -H "X-Master-User-Password: Password123!" | jq

# Delete Database
curl -u admin:your-secure-password -sX DELETE \
  http://localhost:1024/spider/rdbms/cb-spider-mysql-test/databases/mydb \
  -H 'Content-Type: application/json' \
  -d '{
    "ConnectionName": "aws-config01",
    "MasterUserPassword": "Password123!"
  }' | jq

9.6 RDBMS 인스턴스 삭제

curl -u admin:your-secure-password -sX DELETE \
  http://localhost:1024/spider/rdbms/cb-spider-mysql-test \
  -H 'Content-Type: application/json' \
  -d '{"ConnectionName": "aws-config01"}' | jq

10. CSP별 특이사항 (MetaInfo / 생성 시 주의사항)

RDBMS 생성 요청을 CSP별로 커스터마이징할 때 실제로 자주 걸리는 이슈들을 정리했습니다. 요청 전에 반드시 /spider/rdbmsmetainfo로 대상 CSP의 값을 먼저 확인하는 것을 권장합니다.

10.1 MetaInfo 필드가 고정값(DataSource: "Static")으로 제공되는 경우

CSP 필드 내용
Azure StorageTypeOptions 항상 ["NA"] — 스토리지 타입을 Azure가 자동 설정하며 API로 조회/선택 불가
GCP StorageSizeRangeGB.Min 항상 10GB 고정 (Max만 실시간 Cloud SQL Tiers API 값)
Tencent StorageTypeOptions 실시간 조회 결과에 "local_ssd"가 항상 추가로 포함됨
IBM DBSpecOptions 정적으로 관리되는 host_flavor ID 목록 (실시간 조회 API 없음)
IBM StorageTypeOptions 항상 ["NA"] — IBM Cloud Databases는 API로 스토리지 타입/미디어를 선택하는 기능 자체가 없음
NHN StorageSizeRangeGB 항상 20-2048GB 고정 — mysql/mariadb 요청 모두 동일하게 적용
OpenStack StorageSizeRangeGB.Min 항상 1GB 고정
OpenStack StorageSizeRangeGB.Max 프로젝트에 Cinder 볼륨 쿼터가 설정되어 있지 않으면(무제한) -1로 표시 — 실제 상한이 아닌 sentinel 값이므로 그대로 해석하지 말 것
OpenStack, NCP DBSpecOptions 스펙 조회 API가 실패하면 빈 리스트([])로 표시될 수 있음
NCP StorageTypeOptions, StorageSizeRangeGB 항상 고정 (["NA"], 10-6000GB 참고용)

이 외 CSP·필드 조합은 모두 CSP 실시간 API 값입니다.

10.2 스토리지 크기 단위 변환 (StorageSizeRangeGB)

StorageSizeRangeGB는 항상 10진 GB(10⁹ byte) 단위로 제공됩니다. CSP마다 내부 API가 스토리지 한도를 서로 다른 네이티브 단위로 반환하기 때문에, CB-Spider는 그 네이티브 단위가 2진(GiB, 2³⁰ byte)임이 객관적으로 확인된 경우에 한해 GiBToGB() 헬퍼로 변환하며, 그렇지 않은 경우에는 원본 값을 변환 없이 그대로 전달합니다.

CSP별 StorageSizeRangeGB 제공 값 현황

  • RDBMS MetaInfo API 실행 결과, Driver 소스 및 CSP 공식 문서 기반 분석
  • ※ GB(확인불가, 변환없음) 경우 추후 세부 확인 후 개선 예정 — 관련 이슈: #1820
CSP StorageSizeRangeGB (실측) 획득 방식(소스분석) 값변환(소스분석) DataSource
AWS Min: 5, Max: 70369 API GiB->GB API
Azure Min: 21, Max: 35184 API MiB->GB API
GCP Min: 10, Max: 70369 Min: Static / Max: API Min: GB(확인불가, 변환없음) / Max: GiB->GB StorageSizeRangeGB, .Min: Static
Alibaba Min: 5, Max: 64000 API GB(확인불가, 변환없음)⚠️ API
Tencent Min: 20, Max: 30000 API GB(확인불가, 변환없음)⚠️ API
IBM Min: 32, Max: 13194 API MiB->GB API
NCP Min: 10, Max: 6000 Static GB(확인불가, 변환없음) StorageSizeRangeGB: Static
NHN Min: 20, Max: 2048 Static GB(확인불가, 변환없음) StorageSizeRangeGB: Static
OpenStack Min: 1, Max: -1 Min: Static / Max: API Min: GB(확인불가, 변환없음) / Max: GB(확인불가, 변환없음) StorageSizeRangeGB: Min: Static / Max: API
  • 소스 기준: CB-Spider v0.13.1-4
  • DataSource: Spider API가 제공하는 값을 획득한 방법
    • Static: API 미지원으로 문서 분석 기반으로 Spider가 코드에 설정한 고정값
  • GB(확인불가, 변환없음): 원본 단위(2진/10진)가 객관적으로 확인되지 않은 경우
    • ⚠️ Alibaba·Tencent: RDS/CDB API 자체 문서는 "GB"라고만 표기하나, 두 CSP 모두 자사의 다른 스토리지 서비스(Alibaba OSS/Block Storage, Tencent 공식 Free Tier 안내)에서 "스토리지 단위는 2진(binary) 기준"이라고 명시하고 있음. RDS에 대한 명확한 언급이 아니므로, 현재 CB-Spider는 이를 변환 없이 그대로 노출 중임.
  • OpenStack의 Max DataSource="API"는 Cinder 쿼터가 실제로 설정된 일반적인 경우임. 이번 실측(openstack-config01)처럼 쿼터가 설정되지 않아 -1(무제한 sentinel)이 반환된 경우, 드라이버 코드는 .Max를 -1로 제공.

10.3 MasterUserPassword 정책은 CSP마다 다릅니다

CB-Spider는 대부분의 CSP에서 비밀번호 형식을 별도 검증하지 않고 CSP API에 그대로 전달합니다. CSP마다 정책이 다르므로, 생성 실패 시 반환되는 에러 메시지(message 필드)를 참고해 비밀번호를 조정하세요.

예: IBM에 특수문자(!, @ 등)가 포함된 비밀번호를 보내면 실패하고, 반대로 NCP는 특수문자가 반드시 있어야 합니다.

10.4 IBM Cloud Databases의 Gen1 / Gen2 플랫폼

IBM Cloud Databases는 IBM Cloud 콘솔 기준으로 두 개의 별도 인프라 플랫폼을 제공합니다: Gen1(기존 플랫폼, 전체 리전, Public+Private 엔드포인트)과 Gen2(신규 플랫폼, 일부 리전에서만 제공, Private 엔드포인트만 지원). CB-Spider는 Gen1만 프로비저닝합니다.

10.5 CSP별 SecurityGroup 요구/사용 방식

생성 요청의 SecurityGroupNames 필드는 CSP마다 필수 여부와 실제 동작이 크게 다릅니다. 생성 전에 RequiresSecurityGroup 값과 아래 표를 함께 확인하세요.

CSP RequiresSecurityGroup 동작
AWS true 필수. VM(EC2)에서 사용하는 것과 동일한 VPC Security Group 리소스를 공유합니다 — SecurityGroupNames로 지정한 SG가 그대로 RDS 인스턴스에 연결됩니다.
Tencent false 선택. 지정하면 VM(CVM)과 동일한 VPC Security Group 리소스를 공유합니다 — SecurityGroupNames로 지정한 SG가 그대로 RDS 인스턴스에 연결됩니다.
Alibaba, Azure, GCP, IBM, NCP, OpenStack, NHN false 무시됨. SecurityGroupNames에 어떤 값을 넣어도 드라이버가 이 필드를 참조하지 않아 에러나 로그 없이 조용히 무시됩니다. 이 CSP들에서는 생성 요청에 포함할 필요가 없습니다.

NHN 참고: NHN Cloud RDS는 실제로 외부 SQL 접근을 위해 VPC Security Group과는 완전히 별개인 "DB Security Group"(RDS 전용 리소스, 별도 API 네임스페이스)이 반드시 필요합니다. 하지만 이는 CB-Spider의 SecurityGroupNames로 관리되는 대상이 아니며(위 표처럼 어떤 값을 넣어도 무시됩니다), 대신 NHNAutoOpenDBSecurityGroup이라는 NHN 전용 필드로 별도 제공됩니다 — 자세한 내용은 10.6을 참고하세요.

10.6 NHN NHNAutoOpenDBSecurityGroup 옵션

RDBMSCreateRequest.ReqInfo.NHNAutoOpenDBSecurityGroup(bool, 기본값 false)은 NHN Cloud RDS 전용 편의 옵션입니다.

  • true + PublicAccess=true: CB-Spider가 인스턴스 생성 시 전체 개방(0.0.0.0/0) DB Security Group을 자동 생성해 인스턴스에 연결합니다. 인스턴스 삭제 시 이 DB Security Group도 함께 자동 삭제됩니다.
  • true + PublicAccess=false: 잘못된 조합으로, 생성 요청이 NHNAutoOpenDBSecurityGroup requires PublicAccess=true 에러로 거부됩니다.
  • 설정하지 않음(기본값 false): DB Security Group을 전혀 만들지 않습니다 — 10.5의 "무시됨" 동작 그대로이며, 외부 SQL 접속이 필요하면 NHN 콘솔/API에서 직접 DB Security Group을 만들어 연결해야 합니다.
"ReqInfo": {
  ...
  "PublicAccess": true,
  "NHNAutoOpenDBSecurityGroup": true
}

⚠️ 보안 주의: 이 옵션으로 생성된 DB Security Group은 인터넷 전체(0.0.0.0/0)에서 DB 포트로의 접속을 허용합니다. 마스터 계정 ID/PW만 알면 누구나 접속할 수 있으므로, 빠른 테스트/개발 용도로만 사용하고 운영 환경에서는 NHN 콘솔/API로 특정 CIDR만 허용하는 DB Security Group을 직접 구성하는 것을 권장합니다.

10.7 Azure의 SubnetNames는 PublicAccess에 따라 요구 여부가 달라짐

Azure Database for MySQL Flexible Server는 SubnetNames를 항상 사용하는 것이 아니라, PublicAccess=false(VPC private 모드)일 때만 사용합니다.

PublicAccess SubnetNames
true (기본값) 무시됨 — 지정해도 사용되지 않음
false 필수 — 지정하지 않으면 생성 요청이 에러로 거부됨

PublicAccess=false로 지정한 서브넷은 Azure MySQL Flexible Server 전용으로 위임(delegate)되며, 이후 VM 등 다른 리소스와 공유할 수 없습니다.