Skip to main content

Backup

info

The backup API can only be used when cluster mode is disabled.

Create backup

Creates a new backup. However, the following conditions must be met to create a backup:

  • The cluster must be in a Running state.
  • A replica must exist.
  • No backup should be in progress on the cluster.
  • Backup is only supported when cluster mode is disabled.
  • There must be at least two nodes.
caution

During backup creation, source cluster node deletion and promotion are not allowed.

Request
Create backup request syntax
curl -X POST "https://redis.kr-central-2.kakaocloud.com/v1/backups" \
-H "X-Auth-Token: {token-id}" \
-d '{Body}'
TypeParameterData typeDescription
Header{token-id}*StringRefer to API authentication token
BodyclusterId*StringThe ID of the cluster
name*StringThe name of the backup
Create backup request body example
{

"clusterId": "cluster-id",
"name": "backup-name"
}
Response
Status CodeDescription
201Successful response to a resource creation request
400The request is invalid and cannot be processed
401Unauthorized user request
403Forbidden: the user does not have the necessary permissions
404The requested resource does not exist
409Conflict: a duplicate request was made given the current server state
500Internal server error preventing the request from being processed
FieldData typeDescription
objectIdStringBackup ID
Create backup response example
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. If the query parameter clusterName is provided, only backups created for the specified cluster will be returned.

Request
Retrieve backup list request syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups?clusterName={cluster-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterData typeDescription
Header{token-id}*StringRefer to API authentication token
Query{cluster-name}StringCluster name
Query{cluster-id}StringCluster ID
Response
Status CodeDescription
200Successful response to resource retrieval/deletion request
400Invalid request, unable to process
401Unauthorized user request
403User does not have the required permissions
500Internal server error, unable to process request
FieldData typeDescription
backups[]Object ArrayList of backups
backups[].idStringBackup ID
backups[].nameStringBackup name
backups[].projectIdStringProject ID
backups[].clusterNameStringSource cluster name
backups[].clusterIdStringSource cluster ID
backups[].clusterModeEnabledBooleanIndicates whether cluster mode is enabled on the source cluster
- true: Cluster mode enabled
- false: Cluster mode disabled
backups[].sourceTypeStringSource type
- scheduled: Automatic 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 source cluster flavor
backups[].flavor.memoryIntegerMemory size of the source cluster flavor (in GiB)
backups[].shards[]Object ArrayBackup information per shard in the cluster
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, nullable)
- For automatic backups, the deletion time is based on retentionLimit
- For manual backups, this field is null
backups[].statusStringStatus
backups[].createdAtStringCreation date (RFC3339)
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", /* Auto 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"
},
    {
"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"
}
  ]
}

View backup details

Retrieve detailed information about a specific backup.

Request
Retrieve backup details request syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterData typeDescription
URL{backup-name}*StringBackup name
Header{token-id}*StringRefer to API authentication token
Response
Status CodeDescription
200Successful response to resource retrieval/deletion request
400Invalid request, unable to process
401Unauthorized user request
403User does not have the required permissions
404The requested resource does not exist
500Internal server error, unable to process request
FieldData typeDescription
idStringBackup ID
nameStringBackup name
projectIdStringProject ID
clusterNameStringSource cluster name
clusterIdStringSource cluster ID
clusterModeEnabledBooleanIndicates whether 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 flavor
flavor.memoryIntegerMemory size of the source cluster flavor (in GiB)
shards[]Object ArrayBackup information per shard in the cluster
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 the time of backup (in bytes)
shards[].uploadObjectUpload information
shards[].upload.startTimestampStringUpload start time (RFC3339, UTC)
shards[].upload.endTimestampStringUpload end time (RFC3339, UTC)
deletionTimestampStringScheduled deletion time (RFC3339, UTC, nullable)
statusStringStatus
createdAtStringCreation date (RFC3339)
Retrieve backup details 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"
}

Delete backup

Delete a specific backup.

Request
Delete backup request syntax
curl -X DELETE "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterData typeDescription
URL{backup-name}*StringBackup name
Header{token-id}*StringRefer to API authentication token
Response
Status CodeDescription
200Successful response to resource retrieval/deletion request
400Invalid request, unable to process
401Unauthorized user request
403User does not have the required permissions
404The requested resource does not exist
500Internal server error, unable to process request
FieldData typeDescription
objectIdStringBackup ID
Response Example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

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

Clone backup

Clone a specific backup to create an identical copy.

  • This is only possible if the backup is complete and in the Available state.
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}*StringRefer to API authentication token
Bodyname*StringName of the cloned backup
- Length: 4 ~ 63 characters
- Only lowercase letters, numbers, and - are allowed
- Cannot have consecutive - characters
- Must start with a letter
- Must end with a letter or number
- No spaces allowed
Clone backup request body example
{
"name": "copy-backup-name"
}
Response
Status CodeDescription
201Successful response to resource creation request
400Invalid request, unable to process
401Unauthorized user request
404The requested resource does not exist
409Duplicate request given the current server state
500Internal server error, unable to 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

Upload a specific backup to Object Storage.

  • Can only be uploaded to a bucket within the same region and project where the user has permissions.
  • Upload is only possible if the backup is complete and in the Available state.
caution

If the API authentication token expires during the upload process, the backup upload 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 uploaded
Header{token-id}*StringRefer to API authentication token
Bodydestination*StringPath to Object Storage where the backup will be uploaded
e.g., "bucket/folder/.../"
name*StringFile name when uploading the backup
- Must be within 396 bytes (198 characters) including the path excluding the bucket name
- No special characters except hyphen (-), underscore (_), and dot (.)
Upload backup to Object Storage request body example
{
"destination": "bucket/folder/file",
"name": "file-name"
}
Response
Status CodeDescription
200Successful response to resource retrieval/deletion request
400Invalid request, unable to process
401Unauthorized user request
403User does not have the required permissions
404The requested resource does not exist
409Duplicate request given the current server state
500Internal server error, unable to process request
FieldData typeDescription
objectIdStringBackup extraction ID
Upload backup to Object Storage response example
201 OK
content-type: application/json; charset=UTF-8

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