The latest service changes have not yet been reflected in this content. We will update the content as soon as possible. Please refer to the Korean version for information on the latest updates.
이 가이드는 API 명세를 기반으로 AI가 자동 생성했습니다.
VPC 환경에서 이용 가능합니다.
Ncloud 표준 표현을 적용한 API입니다.
새 클러스터를 생성합니다. 비동기(LRO)로 처리되며 202와 함께 Operation을 반환합니다. autoScale.scaleOut.enabled=true인 경우 threshold(connection/cpu 중 하나)와 replica 범위가 필수입니다.
요청
요청 형식을 설명합니다. 요청 형식은 다음과 같습니다.
| 메서드 | URI |
|---|---|
| POST | /clusters |
요청 헤더
Cloud DB Serverless API에서 공통으로 사용하는 헤더에 대한 정보는 Cloud DB Serverless 요청 헤더를 참조해 주십시오.
요청 바디
요청 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
name |
String | Required | 클러스터 이름 (하이픈 시작/끝 불가, 예약 prefix 금지, 멤버 내 유일)
|
storageType |
String | Required | 인스턴스 데이터 스토리지 타입
|
network |
Object | Required | 네트워크 설정 |
network.vpcNo |
Integer (int64) | Required | VPC 번호
|
network.subnetNo |
Integer (int64) | Required | 서브넷 번호
|
network.port |
Integer (int32) | Required | DB 접속 포트
|
multiZone |
Boolean | Required | 멀티 존 구성 여부
|
unit |
UnitRange | Required | 컴퓨팅 unit |
initialDatabase |
Object | Required | 초기 database 및 관리 계정 |
initialDatabase.databaseName |
String | Required | 초기 database 이름 (예약 스키마명 mysql·information_schema·performance_schema·sys 사용 불가)
|
initialDatabase.adminUserName |
String | Required | 관리 계정 이름 (예약어 금지 — admin, root, agent 등)
|
initialDatabase.adminPassword |
String (password) | Required | 관리 계정 비밀번호 (영문+숫자+특수문자 각 1개 이상, ` & + \ " ' / 및 공백 금지)
|
backupConfig |
BackupConfig | Required | 자동 백업 설정 |
autoScale |
AutoscaleConfigRequest | Optional | Auto Scaling 설정 (생략 시 비활성) |
highAvailability |
Boolean | Required | 고가용성(자동 장애 조치) 사용 여부
|
engineVersion |
String | Required | 생성할 엔진 버전 (GET /engine-versions 참조)
|
UnitRange
컴퓨팅 unit 범위 (0.5 단위, 1 이상, min ≤ max)
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
min |
Number (double) | Required | 최솟값
|
max |
Number (double) | Required | 최댓값
|
BackupConfig
자동 백업 설정
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
backupAuto |
Boolean | Optional | 자동 백업 시각 지정 방식
|
backupTime |
String | null | Optional | HH:MM (UTC). backupAuto=false 시 필수
|
retentionDays |
Integer (int32) | Required | 백업 보관일
|
AutoscaleConfigRequest
변경할 필드만 포함 (merge-patch)
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
scaleOut |
Object | Optional | 수평 확장 설정 |
scaleOut.enabled |
Boolean | Optional | 수평 확장 활성화 여부
|
scaleOut.thresholdConnection |
Integer (int32) | Optional | 연결 수 임계값
|
scaleOut.thresholdCpu |
Integer (int32) | Optional | CPU 사용률 임계값 (%)
|
scaleOut.replica |
Object | Optional | 복제본 현황 |
scaleOut.replica.min |
Integer (int32) | Optional | 최솟값
|
scaleOut.replica.max |
Integer (int32) | Optional | 최댓값
|
scaleUp |
Object | Optional | 수직 확장 설정 |
scaleUp.enabled |
Boolean | Optional | 수직 확장 활성화 여부
|
요청 예시
요청 예시는 다음과 같습니다.
curl --location --request POST 'https://clouddb-serverless.apigw.ntruss.com/mysql/v1/clusters' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
"name": "new-cluster",
"storageType": "CB2",
"network": {
"vpcNo": 12345,
"subnetNo": 67890,
"port": 3306
},
"multiZone": false,
"unit": {
"min": 1,
"max": 3
},
"initialDatabase": {
"databaseName": "db",
"adminUserName": "admin_user",
"adminPassword": "Passw0rd!"
},
"backupConfig": {
"retentionDays": 3
},
"highAvailability": true,
"engineVersion": "8.4.5"
}'
응답
응답 형식을 설명합니다.
응답 헤더
응답 헤더에 대한 설명은 다음과 같습니다.
| 필드 | 필수 여부 | 설명 |
|---|---|---|
retry-after |
Optional | 권장 폴링 간격 (초). done=false인 동안 이 간격으로 폴링 (202 응답) |
응답 바디
응답 바디에 대한 설명은 다음과 같습니다.
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
id |
String (uuid) | - | Operation 식별자
|
done |
Boolean | - | 완료 여부
|
metadata |
Object | - | 작업 유형·대상 리소스·시각 등 Operation 부가 정보 |
metadata.operationType |
String | - | 작업 유형
|
metadata.resourceType |
String | - | 대상 리소스 (REST 경로의 리소스 세그먼트와 일치 — 컬렉션은 복수형, 싱글턴은 경로 그대로)
|
metadata.startDateTime |
String (date-time) | - | 작업 시작 시각 (RFC3339 UTC)
|
metadata.endDateTime |
String (date-time) | null | - | 완료 시각 (진행 중이면 null) |
metadata.progress |
Integer (int32) | null | - | 진행률 (%) — 제공 가능한 작업에 한함
|
results |
Map<Object> | null | - | 성공 결과. 요청 인덱스를 키로 하는 Map이며 단건 작업은 "0" 키 하나를 사용 |
results.<키> |
Object | - | 해당 index의 생성·변경된 리소스 표현 |
error |
Object | - | 실패 사유 (단건 작업) |
error.errorCode |
String | - | 에러 코드 |
error.message |
String | - | 에러 메시지 (기본 영어, 다국어 지원 가능) |
error.detail |
String | - | 에러 상세 정보 (기본 영어, 다국어 지원 가능) |
error.fieldErrors |
List<FieldError> | - | 입력값 에러가 발생한 경우 각 필드별 에러 상세 정보 목록 |
failures |
Map<Error> | null | - | 일괄 작업의 index별 실패 사유 |
FieldError
필드 에러 정보
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
message |
String | - | 필드 에러 메시지 (기본 영어, 다국어 지원 가능) |
field |
String | - | 입력값 검증 실패 시 해당 필드 이름 |
Error
에러 정보
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
errorCode |
String | - | 에러 코드 |
message |
String | - | 에러 메시지 (기본 영어, 다국어 지원 가능) |
detail |
String | - | 에러 상세 정보 (기본 영어, 다국어 지원 가능) |
fieldErrors |
List<FieldError> | - | 입력값 에러가 발생한 경우 각 필드별 에러 상세 정보 목록 |
응답 상태 코드
Cloud DB Serverless API에서 공통으로 사용하는 응답 상태 코드에 대한 정보는 Cloud DB Serverless 응답 상태 코드를 참조해 주십시오.
이 API에만 해당하는 응답 상태 코드는 다음과 같습니다.
| HTTP 상태 코드 | 코드 | 메시지 | 설명 |
|---|---|---|---|
| 400 | InvalidParameter | The specified parameter is invalid. | 파라미터 값이 허용 범위나 형식을 벗어난 경우 |
| 400 | InvalidState | Indicates that the specified state is not a valid state for an event source. | 요청한 구성이 현재 적용할 수 없는 상태인 경우 |
| 409 | Conflict | The request could not be processed because of a conflict in the current status of the resource. | 같은 이름의 클러스터가 이미 존재하는 경우 |
| 409 | ResourceInUse | The specified resource is in use. | 리소스에 다른 작업이 진행 중인 경우 |
응답 예시
응답 예시는 다음과 같습니다.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"done": false,
"metadata": {
"operationType": "CREATE",
"resourceType": "users",
"startDateTime": "2026-07-21T10:00:00Z",
"endDateTime": "string(date-time)",
"progress": "integer"
},
"results": {
"key": {}
},
"error": {
"errorCode": "string",
"message": "string",
"detail": "string",
"fieldErrors": [
{
"message": "string",
"field": "string"
}
]
},
"failures": {
"key": {
"errorCode": "string",
"message": "string",
"detail": "string",
"fieldErrors": [
{
"message": "string",
"field": "string"
}
]
}
}
}