Skip to main content

Backup

Create backup

Create a new backup. To create a backup, the following conditions must be met:

  • The cluster must be in Running state
  • At least one replica must exist
  • No ongoing backup operations in the cluster
  • The cluster must contain at least two nodes
caution

While a backup is being created, you cannot add/remove shards, or add/remove/promote nodes in the source cluster.

Request
Request syntax for creating a backup
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/backups" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
TypeParameterTypeDescription
Header{token-id}*StringRefer to API Authentication Token
BodyclusterId*StringID of the cluster
name*StringName of the backup
Request body example for creating a backup
{
"clusterId": "cluster-id",
"name": "backup-name"
}
Response
Status CodeDescription
201Resource created successfully
400Invalid user request
401Unauthorized request
403Forbidden request
404Resource not found
409Conflict with current server state
500Internal server error
FieldTypeDescription
objectIdStringID of the created backup
Response example for creating a backup
201 Created
content-length: 52
content-type: application/json; charset=UTF-8

{
"objectId": "xxxxxxxf-7347-4d87-a49f-e705e91db2fb"
}

Retrieve backup list

Retrieve a list of backups. You can filter the list by clusterName query parameter to get only the backups associated with a specific cluster.

Request
Request syntax for retrieving backup list
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups?clusterName={cluster-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterTypeDescription
Header{token-id}*StringRefer to API Authentication Token
Query{cluster-name}StringName of the cluster
Query{cluster-id}StringID of the cluster
Response
Status CodeDescription
200Request successful
400Invalid user request
401Unauthorized request
403Forbidden request
500Internal server error
FieldTypeDescription
backups[]Object ArrayList of backups
backups[].idStringBackup ID
backups[].nameStringBackup name
backups[].projectIdStringProject ID
backups[].clusterNameStringName of the source cluster for the backup
backups[].clusterIdStringID of the source cluster for the backup
backups[].clusterModeEnabledBooleanWhether cluster mode is enabled for the source cluster
- true: Cluster mode enabled
- false: Cluster mode disabled
backups[].sourceTypeStringSource type
- scheduled: Automated backup
- manual: Manual backup
backups[].engineVersionStringRedis engine version of the source cluster
backups[].flavorObjectFlavor information of the source cluster
backups[].flavor.idStringFlavor ID of the source cluster
backups[].flavor.nameStringFlavor name of the source cluster
backups[].flavor.vcpuIntegerNumber of virtual CPUs in the flavor of the source cluster
backups[].flavor.memoryIntegerMemory size (in GiB) of the flavor of the source cluster
backups[].shards[]Object ArrayBackup information per shard in the cluster
backups[].shards[].shardIdStringID of the shard that was backed up
Available only when cluster mode is enabled
backups[].shards[].slotsStringSlots assigned to the shard at the time of backup
Available only when cluster mode is enabled
backups[].shards[].snapshotObjectSnapshot information
backups[].shards[].snapshot.startTimestampStringSnapshot start time (RFC3339, UTC)
backups[].shards[].snapshot.endTimestampStringSnapshot end time (RFC3339, UTC)
backups[].shards[].snapshot.fileSizeIntegerBackup file size (in bytes)
backups[].shards[].snapshot.memorySizeIntegerRedis memory size at the time of backup (in bytes)
backups[].shards[].uploadObjectUpload information
backups[].shards[].upload.startTimestampStringUpload start time (RFC3339, UTC)
backups[].shards[].upload.endTimestampStringUpload end time (RFC3339, UTC)
backups[].deletionTimestampStringScheduled deletion time (RFC3339, UTC)
- For automatic backups: time is based on retentionLimit
- For manual backups: null
backups[].statusStringStatus of the backup
backups[].createdAtStringCreation time of the backup (RFC3339)
backups[].retentionLimitIntegerBackup retention period (in days). For manual backups, shown as 0
Retrieve backup list 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", /* Automated backup */
"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",
"retentionLimit": 1
},
{
"id": "12341234-1234-4438-9ec0-b6fbf8c4656d",
"name": "manual-backup",
"projectId": "zxcvbnmlkjhg4b41a36823e2091c3a6d",
"clusterName": "test-cluster",
"clusterId": "qwerqwer-qwer-4d77-b365-2832013d2d79",
"clusterModeEnabled": true,
"sourceType": "manual", /* Manual backup */
"engineVersion": "6.2.5",
"flavor": {
"id": "12341234-1234-1234-b3c7-042f796a8fc5",
"name": "a1-8-std",
"vcpu": 8,
"memory": 32
},
"shards": [
{
"shardId": "001",
"slots": "0-8191",
"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"
}
}, {
"shardId": "002",
"slots": "8192-16383",
"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",
"retentionLimit": 0
}
]
}

View backup details

Retrieve detailed information for a specific backup.

Request
Request syntax for viewing backup details
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterTypeDescription
URL{backup-name}*StringName of the backup
Header{token-id}*StringRefer to API Authentication Token
Response
Status CodeDescription
200Request successful
400Invalid user request
401Unauthorized request
403Forbidden request
404Resource not found
500Internal server error
FieldTypeDescription
idStringBackup ID
nameStringBackup name
projectIdStringProject ID
clusterNameStringSource cluster name of the backup
clusterIdStringSource cluster ID of the backup
clusterModeEnabledBooleanWhether cluster mode is enabled on the source cluster
- true: Cluster mode enabled
- false: Cluster mode disabled
sourceTypeStringSource type
- scheduled: Automatic backup
- manual: Manual backup
engineVersionStringRedis engine version of the source cluster
flavorObjectFlavor information of the source cluster
flavor.idStringFlavor ID of the source cluster
flavor.nameStringFlavor name of the source cluster
flavor.vcpuIntegerNumber of virtual CPUs in the source cluster's flavor
flavor.memoryIntegerMemory size (GiB) of the source cluster's flavor
shards[]Object ArrayBackup details by shard in the cluster
shards[].shardIdStringShard ID where the backup was taken
- Only available when cluster mode is enabled
shards[].slotsStringSlot ranges assigned to the shard during backup
- Only available when cluster mode is enabled
shards[].snapshotObjectSnapshot information
shards[].snapshot.startTimestampStringSnapshot start time (RFC3339, UTC)
shards[].snapshot.endTimestampStringSnapshot end time (RFC3339, UTC)
shards[].snapshot.fileSizeIntegerBackup file size (in bytes)
shards[].snapshot.memorySizeIntegerRedis memory size at backup time (in bytes)
shards[].uploadObjectUpload information
shards[].upload.startTimestampStringUpload start time (RFC3339, UTC)
shards[].upload.endTimestampStringUpload end time (RFC3339, UTC)
deletionTimestampStringScheduled deletion time (RFC3339, UTC), may be null
- For automatic backups, this reflects retentionLimit
- For manual backups, returns null
statusStringBackup status
createdAtStringCreation timestamp (RFC3339)
retentionLimitIntegerBackup retention period (days). For manual backups, shown as 0

아래는 요청하신 **"백업 상세 정보 조회 Response Example"**의 영문 주석 버전이며, 마크다운 형식을 유지한 코드블록 안에 넣어드렸습니다.

Response Example: View backup details
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", /* Manual backup */
"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"
}

Delete backup

Delete a specific backup.

Request
Request syntax for deleting a backup
curl -X DELETE "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterTypeDescription
URL{backup-name}*StringName of the backup
Header{token-id}*StringRefer to API Authentication Token
Response
Status CodeDescription
200Request successful
400Invalid user request
401Unauthorized request
403Forbidden request
404Resource not found
500Internal server error
Response example for deleting a backup
{
"objectId": "qwerqwer-7347-4d87-a49f-e705e91db2fb"
}

Clone backup

Clone an existing backup to create a new identical backup.

  • Only available when the backup status is Available.
Request
Clone backup 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}'
TypeParameterData TypeDescription
URL{backup-name}*StringName of the backup to be cloned
Header{token-id}*StringSee API Authentication Token
Bodyname*StringName for the cloned backup
- Length: 4 to 63 characters
- Only lowercase letters, numbers, and hyphens (-) allowed
- No consecutive hyphens allowed
- Must start with a letter and end with a letter or number
- No spaces allowed
Clone backup Request Body Example
{
"name": "copy-backup-name"
}
Response
Status CodeDescription
201Successfully created the resource
400Bad request, cannot proceed
401Unauthorized access
404Requested resource not found
409Duplicate request in current server state
500Internal error, cannot process request
FieldData TypeDescription
objectIdStringID of the cloned backup
Clone backup Response Example
201 OK
content-type: application/json; charset=UTF-8

{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}

Upload backup to Object Storage

Uploads a specific backup to Object Storage.

  • Only buckets within the same region and project with proper permissions can be used.
  • Only backups in Available status can be uploaded.
  • If cluster mode is enabled, files for each shard will be created under the full path with shard numbers added to the backup name.
caution

If the API authentication token expires during upload, the operation may fail.

Request
Upload backup to 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}'
TypeParameterData TypeDescription
URL{backup-name}*StringName of the backup to be exported
Header{token-id}*StringSee API Authentication Token
Bodydestination*StringPath in Object Storage where the backup will be uploaded
e.g. "bucket/folder/.../"
name*StringFile name to be used during upload
- Path (excluding bucket name) must be within 396 bytes (198 characters)
- Special characters other than hyphen (-), underscore (_), and dot (.) are not allowed
Upload backup to Object Storage Request Body Example
{
"destination": "bucket/folder/file",
"name": "file-name"
}
Response
Status CodeDescription
200Successfully processed the request
400Bad request, cannot proceed
401Unauthorized access
403Forbidden, lack of permission
404Requested resource not found
409Duplicate request in current server state
500Internal error, cannot process request
FieldData TypeDescription
objectIdStringBackup export ID
Upload backup to Object Storage Response Example
201 OK
content-type: application/json; charset=UTF-8

{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}