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}'
Type | Parameter | Data type | Description |
---|---|---|---|
Header | {token-id} * | String | Refer to API authentication token |
Body | clusterId* | String | The ID of the cluster |
name* | String | The name of the backup |
Create backup request body example
{
"clusterId": "cluster-id",
"name": "backup-name"
}
Response
Status Code | Description |
---|---|
201 | Successful response to a resource creation request |
400 | The request is invalid and cannot be processed |
401 | Unauthorized user request |
403 | Forbidden: the user does not have the necessary permissions |
404 | The requested resource does not exist |
409 | Conflict: a duplicate request was made given the current server state |
500 | Internal server error preventing the request from being processed |
Field | Data type | Description |
---|---|---|
objectId | String | Backup 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}"
Type | Parameter | Data type | Description |
---|---|---|---|
Header | {token-id} * | String | Refer to API authentication token |
Query | {cluster-name} | String | Cluster name |
Query | {cluster-id} | String | Cluster ID |
Response
Status Code | Description |
---|---|
200 | Successful response to resource retrieval/deletion request |
400 | Invalid request, unable to process |
401 | Unauthorized user request |
403 | User does not have the required permissions |
500 | Internal server error, unable to process request |
Field | Data type | Description |
---|---|---|
backups[] | Object Array | List of backups |
backups[].id | String | Backup ID |
backups[].name | String | Backup name |
backups[].projectId | String | Project ID |
backups[].clusterName | String | Source cluster name |
backups[].clusterId | String | Source cluster ID |
backups[].clusterModeEnabled | Boolean | Indicates whether cluster mode is enabled on the source cluster - true : Cluster mode enabled - false : Cluster mode disabled |
backups[].sourceType | String | Source type - scheduled : Automatic backup - manual : Manual backup |
backups[].engineVersion | String | Redis engine version of the source cluster |
backups[].flavor | Object | Flavor information of the source cluster |
backups[].flavor.id | String | Flavor ID of the source cluster |
backups[].flavor.name | String | Flavor name of the source cluster |
backups[].flavor.vcpu | Integer | Number of virtual CPUs in the source cluster flavor |
backups[].flavor.memory | Integer | Memory size of the source cluster flavor (in GiB) |
backups[].shards[] | Object Array | Backup information per shard in the cluster |
backups[].shards[].snapshot | Object | Snapshot information |
backups[].shards[].snapshot.startTimestamp | String | Snapshot start time (RFC3339, UTC) |
backups[].shards[].snapshot.endTimestamp | String | Snapshot end time (RFC3339, UTC) |
backups[].shards[].snapshot.fileSize | Integer | Backup file size (in bytes) |
backups[].shards[].snapshot.memorySize | Integer | Redis memory size at the time of backup (in bytes) |
backups[].shards[].upload | Object | Upload information |
backups[].shards[].upload.startTimestamp | String | Upload start time (RFC3339, UTC) |
backups[].shards[].upload.endTimestamp | String | Upload end time (RFC3339, UTC) |
backups[].deletionTimestamp | String | Scheduled deletion time (RFC3339, UTC, nullable) - For automatic backups, the deletion time is based on retentionLimit - For manual backups, this field is null |
backups[].status | String | Status |
backups[].createdAt | String | Creation 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}"
Type | Parameter | Data type | Description |
---|---|---|---|
URL | {backup-name} * | String | Backup name |
Header | {token-id} * | String | Refer to API authentication token |
Response
Status Code | Description |
---|---|
200 | Successful response to resource retrieval/deletion request |
400 | Invalid request, unable to process |
401 | Unauthorized user request |
403 | User does not have the required permissions |
404 | The requested resource does not exist |
500 | Internal server error, unable to process request |
Field | Data type | Description |
---|---|---|
id | String | Backup ID |
name | String | Backup name |
projectId | String | Project ID |
clusterName | String | Source cluster name |
clusterId | String | Source cluster ID |
clusterModeEnabled | Boolean | Indicates whether cluster mode is enabled on the source cluster - true : Cluster mode enabled - false : Cluster mode disabled |
sourceType | String | Source type - scheduled : Automatic backup - manual : Manual backup |
engineVersion | String | Redis engine version of the source cluster |
flavor | Object | Flavor information of the source cluster |
flavor.id | String | Flavor ID of the source cluster |
flavor.name | String | Flavor name of the source cluster |
flavor.vcpu | Integer | Number of virtual CPUs in the source cluster flavor |
flavor.memory | Integer | Memory size of the source cluster flavor (in GiB) |
shards[] | Object Array | Backup information per shard in the cluster |
shards[].snapshot | Object | Snapshot information |
shards[].snapshot.startTimestamp | String | Snapshot start time (RFC3339, UTC) |
shards[].snapshot.endTimestamp | String | Snapshot end time (RFC3339, UTC) |
shards[].snapshot.fileSize | Integer | Backup file size (in bytes) |
shards[].snapshot.memorySize | Integer | Redis memory size at the time of backup (in bytes) |
shards[].upload | Object | Upload information |
shards[].upload.startTimestamp | String | Upload start time (RFC3339, UTC) |
shards[].upload.endTimestamp | String | Upload end time (RFC3339, UTC) |
deletionTimestamp | String | Scheduled deletion time (RFC3339, UTC, nullable) |
status | String | Status |
createdAt | String | Creation 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}"
Type | Parameter | Data type | Description |
---|---|---|---|
URL | {backup-name} * | String | Backup name |
Header | {token-id} * | String | Refer to API authentication token |
Response
Status Code | Description |
---|---|
200 | Successful response to resource retrieval/deletion request |
400 | Invalid request, unable to process |
401 | Unauthorized user request |
403 | User does not have the required permissions |
404 | The requested resource does not exist |
500 | Internal server error, unable to process request |
Field | Data type | Description |
---|---|---|
objectId | String | Backup 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}'
Type | Parameter | Data type | Description |
---|---|---|---|
URL | {backup-name} * | String | Name of the backup to be cloned |
Header | {token-id} * | String | Refer to API authentication token |
Body | name* | String | Name 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 Code | Description |
---|---|
201 | Successful response to resource creation request |
400 | Invalid request, unable to process |
401 | Unauthorized user request |
404 | The requested resource does not exist |
409 | Duplicate request given the current server state |
500 | Internal server error, unable to process request |
Field | Data type | Description |
---|---|---|
objectId | String | ID 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}'
Type | Parameter | Data type | Description |
---|---|---|---|
URL | {backup-name} * | String | Name of the backup to be uploaded |
Header | {token-id} * | String | Refer to API authentication token |
Body | destination* | String | Path to Object Storage where the backup will be uploaded e.g., "bucket/folder/.../" |
name* | String | File 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 Code | Description |
---|---|
200 | Successful response to resource retrieval/deletion request |
400 | Invalid request, unable to process |
401 | Unauthorized user request |
403 | User does not have the required permissions |
404 | The requested resource does not exist |
409 | Duplicate request given the current server state |
500 | Internal server error, unable to process request |
Field | Data type | Description |
---|---|---|
objectId | String | Backup extraction ID |
Upload backup to Object Storage response example
201 OK
content-type: application/json; charset=UTF-8
{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}