백업
안내
백업 API는 클러스터 모드를 사용하지 않을 경우에만 사용할 수 있습니다.
백업 생성
새로운 백업을 생성합니다. 단, 백업 생성을 위해 아래 조건을 만족해야 합니다.
- 클러스터가
Running
상태에 있어야 함 - Replica가 존재해야 함
- 클러스터에 진행 중인 백업이 없어야 함
- 현재 클러스터 모드 미사용 시에만 백업 지원
- 노드가 2개 이상이어야 함
주의
백업 생성 중일 때는 소스 클러스터 노드 삭제 및 승격이 불가합니다.
Request
백업 생성 Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/backups" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
Header | {token-id} * | String | API 인증 토큰 참고 |
Body | clusterId* | String | 클러스터의 ID |
name* | String | 백업 이름 |
백업 생성 Request Body Example
{
"clusterId": "cluster-id",
"name": "backup-name"
}
Response
상태 코드 | 설명 |
---|---|
201 | 리소스 생성 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
403 | 권한이 없는 사용자가 요청한 경우 |
404 | 사용자가 요청한 리소스가 존재하지 않은 경우 |
409 | 현재 서버의 상태에 중복된 요청이 발생한 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
objectId | String | 백업 ID |
백업 생성 Response Example
201 Created
content-length: 52
content-type: application/json; charset=UTF-8
{
"objectId": "xxxxxxxf-7347-4d87-a49f-e705e91db2fb"
}
백업 목록 조회
백업 목록을 조회합니다. 쿼리 파라미터로 clusterName
을 전달할 경우, 해당 클러스터로 만들어진 백업만 조회할 수 있습니다.
Request
백업 목록 조회 Request Syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups?clusterName={cluster-name}" \
-H "X-Auth-Token: {token-id}"
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
Header | {token-id} * | String | API 인증 토큰 참고 |
Query | {cluster-name} | String | 클러스터 이름 |
Query | {cluster-id} | String | 클러스터 ID |
Response
상태 코드 | 설명 |
---|---|
200 | 리소스 조회/삭제 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
403 | 권한이 없는 사용자가 요청한 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
backups[] | Object Array | 백업 목록 |
backups[].id | String | 백업 ID |
backups[].name | String | 백업 이름 |
backups[].projectId | String | 프로젝트 ID |
backups[].clusterName | String | 백업 소스 클러스터 이름 |
backups[].clusterId | String | 백업 소스 클러스터 ID |
backups[].clusterModeEnabled | Boolean | 백업 소스 클러스터의 클러스터 모드 활성화 여부 - true : 클러스터 모드 사용 - false : 클러스터 모드 미사용 |
backups[].sourceType | String | 소스 유형 - scheduled : 자동 백업 - manual : 수동 백업 |
backups[].engineVersion | String | 백업 소스 클러스터의 Redis 엔진 버전 |
backups[].flavor | Object | 백업 소스 클러스터의 플레이버 정보 |
backups[].flavor.id | String | 백업 소스 클러스터의 플레이버 ID |
backups[].flavor.name | String | 백업 소스 클러스터의 플레이버 이름 |
backups[].flavor.vcpu | Integer | 백업 소스 클러스터의 플레이버의 가상 CPU 수 |
backups[].flavor.memory | Integer | 백업 소스 클러스터의 플레이버의 메모리 크기(GiB) |
backups[].shards[] | Object Array | 클러스터의 샤드별 백업 정보 |
backups[].shards[].snapshot | Object | 스냅샷 정보 |
backups[].shards[].snapshot.startTimestamp | String | 스냅샷 시작 시간 (RFC3339, UTC 기준) |
backups[].shards[].snapshot.endTimestamp | String | 스냅샷 종료 시간 (RFC3339, UTC 기준) |
backups[].shards[].snapshot.fileSize | Integer | 백업 파일 크기(단위: 바이트) |
backups[].shards[].snapshot.memorySize | Integer | 백업 당시 Redis 메모리 크기(단위: 바이트) |
backups[].shards[].upload | Object | 업로드 정보 |
backups[].shards[].upload.startTimestamp | String | 업로드 시작 시간 (RFC3339, UTC 기준) |
backups[].shards[].upload.endTimestamp | String | 업로드 종료 시간 (RFC3339, UTC 기준) |
backups[].deletionTimestamp | String | 삭제 예정 시간 (RFC3339, UTC 기준, null 가능) - 자동백업의 경우 retentionLimit 에 따른 삭제 예정 시간 조회됨 - 수동백업의 경우 null로 조회 |
backups[].status | String | 상태 |
backups[].createdAt | String | 생성 날짜 (RFC3339) |
백업 목록 조회 Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8
{
"backups": [
{
"id": "asdfasdf-c6b6-40ca-8d2a-44a85166259d",
"name": "scheduled.backup.2024-03-13-00-00.KST",
"projectId": "asdfqwerzxcv4b41a36823e2091c3a6d",
"clusterName": "test-cluster",
"clusterId": "qwerqwer-3261-457a-a826-4e789f3669bf",
"clusterModeEnabled": false,
"sourceType": "scheduled", /* 자동 백업 */
"engineVersion": "6.2.5",
"flavor": {
"id": "zxcvzxcv-qwer-4822-8a7d-9e301c86a58d",
"name": "a1-2-co",
"vcpu": 2,
"memory": 4
},
"shards": [
{
"snapshot": {
"startTimestamp": "2024-03-12T15:00:07Z",
"endTimestamp": "2024-03-12T15:00:59Z",
"fileSize": 1097408574,
"memorySize": 2276701464
},
"upload": {
"startTimestamp": "2024-03-12T15:01:12Z",
"endTimestamp": "2024-03-12T15:01:45Z"
}
}
],
"deletionTimestamp": "2024-03-13T15:00:01.259773Z",
"status": "Available",
"createdAt": "2024-03-12T15:00:01.260312Z"
},
{
"id": "12341234-1234-4438-9ec0-b6fbf8c4656d",
"name": "manual-backup",
"projectId": "zxcvbnmlkjhg4b41a36823e2091c3a6d",
"clusterName": "test-cluster",
"clusterId": "qwerqwer-qwer-4d77-b365-2832013d2d79",
"clusterModeEnabled": false,
"sourceType": "manual", /* 수동 백업 */
"engineVersion": "6.2.5",
"flavor": {
"id": "12341234-1234-1234-b3c7-042f796a8fc5",
"name": "a1-8-std",
"vcpu": 8,
"memory": 32
},
"shards": [
{
"snapshot": {
"startTimestamp": "2024-03-12T12:09:30Z",
"endTimestamp": "2024-03-12T12:13:13Z",
"fileSize": 2802172768,
"memorySize": 21975228040
},
"upload": {
"startTimestamp": "2024-03-12T12:13:30Z",
"endTimestamp": "2024-03-12T12:14:55Z"
}
}
],
"deletionTimestamp": null,
"status": "Available",
"createdAt": "2024-03-12T12:09:28.251656Z"
}
]
}
백업 상세 정보 조회
특정 백업의 상세 정보를 조회합니다.
Request
백업 상세 정보 조회 Request Syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
URL | {backup-name} * | String | 백업 이름 |
Header | {token-id} * | String | API 인증 토큰 참고 |
Response
상태 코드 | 설명 |
---|---|
200 | 리소스 조회/삭제 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
403 | 권한이 없는 사용자가 요청한 경우 |
404 | 사용자가 요청한 리소스가 존재하지 않은 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
id | String | 백업 ID |
name | String | 백업 이름 |
projectId | String | 프로젝트 ID |
clusterName | String | 백업 소스 클러스터 이름 |
clusterId | String | 백업 소스 클러스터 ID |
clusterModeEnabled | Boolean | 백업 소스 클러스터의 클러스터 모드 활성화 여부 - true : 클러스터 모드 사용 - false : 클러스터 모드 사용 안 함 |
sourceType | String | 소스 유형 - scheduled : 자동 백업 - manual : 수동 백업 |
engineVersion | String | 백업 소스 클러스터의 Redis 엔진 버전 |
flavor | Object | 백업 소스 클러스터의 플레이버 정보 |
flavor.id | String | 백업 소스 클러스터의 플레이버 ID |
flavor.name | String | 백업 소스 클러스터의 플레이버 이름 |
flavor.vcpu | Integer | 백업 소스 클러스터의 플레이버의 가상 CPU 수 |
flavor.memory | Integer | 백업 소스 클러스터의 플레이버의 메모리 크기(GiB) |
shards[] | Object Array | 클러스터의 샤드별 백업 정보 |
shards[].snapshot | Object | 스냅샷 정보 |
shards[].snapshot.startTimestamp | String | 스냅샷 시작 시간 (RFC3339, UTC 기준) |
shards[].snapshot.endTimestamp | String | 스냅샷 종료 시간 (RFC3339, UTC 기준) |
shards[].snapshot.fileSize | Integer | 백업 파일 크기(단위: 바이트) |
shards[].snapshot.memorySize | Integer | 백업 당시 Redis 메모리 크기(단위: 바이트) |
shards[].upload | Object | 업로드 정보 |
shards[].upload.startTimestamp | String | 업로드 시작 시간 (RFC3339, UTC 기준) |
shards[].upload.endTimestamp | String | 업로드 종료 시간 (RFC3339, UTC 기준) |
deletionTimestamp | String | 삭제 예정 시간 (RFC3339, UTC 기준, null 가능) |
status | String | 상태 |
createdAt | String | 생성 날짜 (RFC3339) |
백업 상세 정보 조회 Response Example
200 Created
content-length: 52
content-type: application/json; charset=UTF-8
{
"id": "12341234-1234-4438-9ec0-b6fbf8c4656d",
"name": "manual-backup",
"projectId": "zxcvbnmlkjhg4b41a36823e2091c3a6d",
"clusterName": "test-cluster",
"clusterId": "qwerqwer-qwer-4d77-b365-2832013d2d79",
"clusterModeEnabled": false,
"sourceType": "manual", /* 수동 백업 */
"engineVersion": "6.2.5",
"flavor": {
"id": "12341234-1234-1234-b3c7-042f796a8fc5",
"name": "a1-8-std",
"vcpu": 8,
"memory": 32
},
"shards": [
{
"snapshot": {
"startTimestamp": "2024-03-12T12:09:30Z",
"endTimestamp": "2024-03-12T12:13:13Z",
"fileSize": 2802172768,
"memorySize": 21975228040
},
"upload": {
"startTimestamp": "2024-03-12T12:13:30Z",
"endTimestamp": "2024-03-12T12:14:55Z"
}
}
],
"deletionTimestamp": null,
"status": "Available",
"createdAt": "2024-03-12T12:09:28.251656Z"
}
백업 삭제
특정 백업을 삭제합니다.
Request
백업 삭제 Request Syntax
curl -X DELETE "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
URL | {backup-name} * | String | 백업 이름 |
Header | {token-id} * | String | API 인증 토큰 참고 |
Response
상태 코드 | 설명 |
---|---|
200 | 리소스 조회/삭제 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
403 | 권한이 없는 사용자가 요청한 경우 |
404 | 사용자가 요청한 리소스가 존재하지 않은 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
objectId | String | 백업 ID |
백업 삭제 Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8
{
"objectId": "qwerqwer-7347-4d87-a49f-e705e91db2fb"
}
백업 복제
특정 백업과 동일한 백업을 복제합니다.
- 백업이 완료되었고,
Available
상태인 경우에만 가능합니다.
Request
백업 복제 Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}/copy" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
URL | {backup-name} * | String | 복제 대상의 백업 이름 |
Header | {token-id} * | String | API 인증 토큰 참고 |
Body | name* | String | 복제된 백업 이름 - 글자수: 4 ~ 63자 - 영어 소문자/숫자/ - 제외 모든 값 입력 불가- - 연속 입력 불가- 영어로 시작해야 함 - 영어/숫자로 끝나야 함 - 공백 입력 불가 |
백업 복제 Request Body Example
{
"name": "copy-backup-name"
}
Response
상태 코드 | 설명 |
---|---|
201 | 리소스 생성 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
404 | 사용자가 요청한 리소스가 존재하지 않은 경우 |
409 | 현재 서버의 상태에 중복된 요청이 발생한 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
objectId | String | 복제된 백업의 ID |
백업 복제 Response Example
201 OK
content-type: application/json; charset=UTF-8
{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}
백업을 Object Storage로 업로드
특정 백업을 Object Storage로 업로드합니다.
- 동일 리전, 프로젝트 내에 권한이 있는 버킷으로만 업로드할 수 있습니다
- 백업이 완료되었고,
Available
상태인 경우에만 업로드가 가능합니다.
주의
백업을 Object Storage로 업로드하는 도중 API 인증 토큰이 만료될 경우, 업로드에 실패할 수 있습니다.
Request
백업을 Object Storage로 업로드 Request Syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}/export" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
종류 | 파라미터 | 유형 | 설명 |
---|---|---|---|
URL | {backup-name} * | String | 복제할 백업 이름 |
Header | {token-id} * | String | API 인증 토큰 참고 |
Body | destination* | String | 백업을 업로드할 Object Storage 경로 ex. "bucket/folder/.../" |
name* | String | 백업을 업로드할 때 파일 이름 - 버킷 이름을 제외한 경로 포함 396 bytes(198자) 이내 - 하이픈( - ), 언더바(_ ), 점(. ) 제외 특수문자 입력 불가 |
백업을 Object Storage로 업로드 Request Body Example
{
"destination": "bucket/folder/file",
"name": "file-name"
}
Response
상태 코드 | 설명 |
---|---|
200 | 리소스 조회/삭제 요청에 대한 성공 응답 |
400 | 사용자의 요청이 유효하지 않아 작업을 진행할 수 없음 |
401 | 인증되지 않은 사용자가 요청한 경우 |
403 | 권한이 없는 사용자가 요청한 경우 |
404 | 사용자가 요청한 리소스가 존재하지 않은 경우 |
409 | 현재 서버의 상태에 중복된 요청이 발생한 경우 |
500 | 내부 에러로 작업을 진행할 수 없는 경우 |
필드 | 유형 | 설명 |
---|---|---|
objectId | String | 백업 추출 ID |
백업을 Object Storage로 업로드 Response Example
201 OK
content-type: application/json; charset=UTF-8
{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}