Skip to main content

Backup

Create backup

Create new backup. The following conditions must be met:

  • Cluster must be in Running state
  • Replica must exist
  • No backup should be in progress
  • Cluster must have at least 2 nodes
caution

During backup creation, you cannot add/delete shards, or add/delete/promote nodes in the source cluster.

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}'
TypeParameterTypeDescription
Header{token-id}*StringSee API authentication token
BodyclusterId*StringCluster ID
name*StringBackup name
Create backup request body example
{
"clusterId": "cluster-id",
"name": "backup-name"
}
Response
Status codeDescription
201Successfully created
400Invalid user request
401Unauthorized
403Forbidden
404Resource not found
409Duplicate request conflict
500Internal server error
FieldTypeDescription
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 clusterName query parameter is provided, only backups created for that cluster are 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}"
TypeParameterTypeDescription
Header{token-id}*StringSee API authentication token
Querycluster-nameStringCluster name
Querycluster-idStringCluster ID
Response
Status codeDescription
200Successfully retrieved
400Invalid user request
401Unauthorized
403Forbidden
500Internal server error
FieldTypeDescription
backups[]Object arrayList of backups
backups[].idStringBackup ID
backups[].nameStringBackup name
backups[].projectIdStringProject ID
backups[].clusterNameStringSource cluster name
backups[].clusterIdStringSource cluster ID
backups[].clusterModeEnabledBooleanCluster mode enabled status
- true: Cluster mode enabled
- false: Cluster mode disabled
backups[].sourceTypeStringBackup source type
- scheduled: Scheduled backup
- manual: Manual backup
backups[].engineVersionStringRedis engine version of source cluster
backups[].flavorObjectFlavor information of source cluster
backups[].flavor.idStringFlavor ID
backups[].flavor.nameStringFlavor name
backups[].flavor.vcpuIntegerNumber of virtual CPUs
backups[].flavor.memoryIntegerMemory size in GiB
backups[].shards[]Object arrayBackup info by shard
backups[].shards[].shardIdStringShard ID (only for cluster mode enabled)
backups[].shards[].slotsStringSlots assigned to shard at time of backup (only for cluster mode enabled)
backups[].shards[].snapshotObjectSnapshot info
backups[].shards[].snapshot.startTimestampStringSnapshot start time (RFC3339, UTC)
backups[].shards[].snapshot.endTimestampStringSnapshot end time (RFC3339, UTC)
backups[].shards[].snapshot.fileSizeIntegerBackup file size (bytes)
backups[].shards[].snapshot.memorySizeIntegerRedis memory size at time of backup (bytes)
backups[].shards[].uploadObjectUpload info
backups[].shards[].upload.startTimestampStringUpload start time (RFC3339, UTC)
backups[].shards[].upload.endTimestampStringUpload end time (RFC3339, UTC)
backups[].deletionTimestampStringScheduled deletion time (RFC3339, UTC, nullable)
- For scheduled backups, calculated based on retentionLimit
- For manual backups, set to null
backups[].statusStringBackup status
backups[].createdAtStringCreation date (RFC3339)
backups[].retentionLimitIntegerRetention period (days)
- 0 for manual backups
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",
"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",
"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

View details of a specific backup.

Request
View backup details request syntax
curl -X GET "https://redis.kr-central-2.kakaocloud.com/v1/backups/{backup-name}" \
-H "X-Auth-Token: {token-id}"
TypeParameterTypeDescription
URL{backup-name}*StringBackup name
Header{token-id}*StringSee API authentication token
Response
Status codeDescription
200Successfully retrieved
400Invalid user request
401Unauthorized
403Forbidden
404Resource not found
500Internal server error
FieldTypeDescription
idStringBackup ID
nameStringBackup name
projectIdStringProject ID
clusterNameStringSource cluster name
clusterIdStringSource cluster ID
clusterModeEnabledBooleanWhether cluster mode is enabled
- true: Enabled
- false: Disabled
sourceTypeStringSource type
- scheduled: Scheduled backup
- manual: Manual backup
engineVersionStringRedis engine version
flavorObjectFlavor information of source cluster
flavor.idStringFlavor ID
flavor.nameStringFlavor name
flavor.vcpuIntegerNumber of virtual CPUs
flavor.memoryIntegerMemory size (GiB)
shards[]Object arrayBackup info by shard
shards[].shardIdStringShard ID (visible only if cluster mode is enabled)
shards[].slotsStringAssigned slots at backup time (only if cluster mode is enabled)
shards[].snapshotObjectSnapshot info
shards[].snapshot.startTimestampStringSnapshot start time (RFC3339, UTC)
shards[].snapshot.endTimestampStringSnapshot end time (RFC3339, UTC)
shards[].snapshot.fileSizeIntegerBackup file size (bytes)
shards[].snapshot.memorySizeIntegerRedis memory size at backup time (bytes)
shards[].uploadObjectUpload info
shards[].upload.startTimestampStringUpload start time (RFC3339, UTC)
shards[].upload.endTimestampStringUpload end time (RFC3339, UTC)
deletionTimestampStringScheduled deletion time (RFC3339, UTC, nullable)
statusStringBackup status
createdAtStringCreation date (RFC3339)
retentionLimitIntegerRetention period (days), 0 for manual backups
View 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}"
TypeParameterTypeDescription
URL{backup-name}*StringBackup name
Header{token-id}*StringSee API authentication token
Response
Status codeDescription
200Successfully deleted
400Invalid user request
401Unauthorized
403Forbidden
404Resource not found
500Internal server error
FieldTypeDescription
objectIdStringBackup ID
Delete backup response example
200 OK
content-length: 52
content-type: application/json; charset=UTF-8

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

Clone backup

Clone a backup with identical content.

  • Cloning is only allowed if the backup is complete and in Available status.
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}'
TypeParameterTypeDescription
URL{backup-name}*StringName of the backup to clone
Header{token-id}*StringSee API authentication token
Bodyname*StringName of the cloned backup
- Length: 4–63 characters
- Only lowercase letters, digits, and hyphens (-) allowed
- Cannot contain consecutive hyphens
- Must start with a letter
- Must end with a letter or digit
- No spaces allowed
Clone backup request body example
{
"name": "copy-backup-name"
}
Response
Status codeDescription
201Successfully created
400Invalid user request
401Unauthorized
404Resource not found
409Duplicate request conflict
500Internal server error
FieldTypeDescription
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.

  • You can only upload to buckets within the same region and project where you have permission.
  • Upload is only allowed if the backup is complete and in Available status.
  • If using cluster mode, the backup file is created in the full Object Storage path for each shard, using the shard number in the backup file name.
caution

If the API authentication token expires during the upload process, the 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}'
TypeParameterTypeDescription
URL{backup-name}*StringName of the backup to upload
Header{token-id}*StringSee API authentication token
Bodydestination*StringObject Storage path to upload to
e.g., "bucket/folder/.../"
name*StringFile name when uploading
- Max 396 bytes (198 characters)
- Only letters, digits, hyphen (-), underscore (_), and period (.) allowed
- Special characters other than these are not allowed
Upload backup to Object Storage request body example
{
"destination": "bucket/folder/file",
"name": "file-name"
}
Response
Status codeDescription
200Successfully uploaded
400Invalid user request
401Unauthorized
403Forbidden
404Resource not found
409Duplicate request conflict
500Internal server error
FieldTypeDescription
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"
}