Backup
Create backup
Create new backup. The following conditions must be met:
- Cluster must be in
Runningstate - 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}'
| Type | Parameter | Type | Description |
|---|---|---|---|
| Header | {token-id}* | String | See API authentication token |
| Body | clusterId* | String | Cluster ID |
| name* | String | Backup name |
Create backup request body example
{
"clusterId": "cluster-id",
"name": "backup-name"
}
Response
| Status code | Description |
|---|---|
201 | Successfully created |
400 | Invalid user request |
401 | Unauthorized |
403 | Forbidden |
404 | Resource not found |
409 | Duplicate request conflict |
500 | Internal server error |
| Field | 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 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}"
| Type | Parameter | Type | Description |
|---|---|---|---|
| Header | {token-id}* | String | See API authentication token |
| Query | cluster-name | String | Cluster name |
| Query | cluster-id | String | Cluster ID |
Response
| Status code | Description |
|---|---|
200 | Successfully retrieved |
400 | Invalid user request |
401 | Unauthorized |
403 | Forbidden |
500 | Internal server error |
| Field | 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 | Cluster mode enabled status - true: Cluster mode enabled- false: Cluster mode disabled |
| backups[].sourceType | String | Backup source type - scheduled: Scheduled backup- manual: Manual backup |
| backups[].engineVersion | String | Redis engine version of source cluster |
| backups[].flavor | Object | Flavor information of source cluster |
| backups[].flavor.id | String | Flavor ID |
| backups[].flavor.name | String | Flavor name |
| backups[].flavor.vcpu | Integer | Number of virtual CPUs |
| backups[].flavor.memory | Integer | Memory size in GiB |
| backups[].shards[] | Object array | Backup info by shard |
| backups[].shards[].shardId | String | Shard ID (only for cluster mode enabled) |
| backups[].shards[].slots | String | Slots assigned to shard at time of backup (only for cluster mode enabled) |
| backups[].shards[].snapshot | Object | Snapshot info |
| 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 (bytes) |
| backups[].shards[].snapshot.memorySize | Integer | Redis memory size at time of backup (bytes) |
| backups[].shards[].upload | Object | Upload info |
| 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 scheduled backups, calculated based on retentionLimit- For manual backups, set to null |
| backups[].status | String | Backup status |
| backups[].createdAt | String | Creation date (RFC3339) |
| backups[].retentionLimit | Integer | Retention 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}"
| Type | Parameter | Type | Description |
|---|---|---|---|
| URL | {backup-name}* | String | Backup name |
| Header | {token-id}* | String | See API authentication token |
Response
| Status code | Description |
|---|---|
200 | Successfully retrieved |
400 | Invalid user request |
401 | Unauthorized |
403 | Forbidden |
404 | Resource not found |
500 | Internal server error |
| Field | 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 | Whether cluster mode is enabled - true: Enabled- false: Disabled |
| sourceType | String | Source type - scheduled: Scheduled backup- manual: Manual backup |
| engineVersion | String | Redis engine version |
| flavor | Object | Flavor information of source cluster |
| flavor.id | String | Flavor ID |
| flavor.name | String | Flavor name |
| flavor.vcpu | Integer | Number of virtual CPUs |
| flavor.memory | Integer | Memory size (GiB) |
| shards[] | Object array | Backup info by shard |
| shards[].shardId | String | Shard ID (visible only if cluster mode is enabled) |
| shards[].slots | String | Assigned slots at backup time (only if cluster mode is enabled) |
| shards[].snapshot | Object | Snapshot info |
| 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 (bytes) |
| shards[].snapshot.memorySize | Integer | Redis memory size at backup time (bytes) |
| shards[].upload | Object | Upload info |
| 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 | Backup status |
| createdAt | String | Creation date (RFC3339) |
| retentionLimit | Integer | Retention 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}"
| Type | Parameter | Type | Description |
|---|---|---|---|
| URL | {backup-name}* | String | Backup name |
| Header | {token-id}* | String | See API authentication token |
Response
| Status code | Description |
|---|---|
200 | Successfully deleted |
400 | Invalid user request |
401 | Unauthorized |
403 | Forbidden |
404 | Resource not found |
500 | Internal server error |
| Field | Type | Description |
|---|---|---|
| objectId | String | Backup 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
Availablestatus.
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 | Type | Description |
|---|---|---|---|
| URL | {backup-name}* | String | Name of the backup to clone |
| Header | {token-id}* | String | See API authentication token |
| Body | name* | String | Name 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 code | Description |
|---|---|
201 | Successfully created |
400 | Invalid user request |
401 | Unauthorized |
404 | Resource not found |
409 | Duplicate request conflict |
500 | Internal server error |
| Field | 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.
- 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
Availablestatus. - 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}'
| Type | Parameter | Type | Description |
|---|---|---|---|
| URL | {backup-name}* | String | Name of the backup to upload |
| Header | {token-id}* | String | See API authentication token |
| Body | destination* | String | Object Storage path to upload to e.g., "bucket/folder/.../" |
| name* | String | File 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 code | Description |
|---|---|
200 | Successfully uploaded |
400 | Invalid user request |
401 | Unauthorized |
403 | Forbidden |
404 | Resource not found |
409 | Duplicate request conflict |
500 | Internal server error |
| Field | Type | Description |
|---|---|---|
| objectId | String | Backup export ID |
Upload backup to Object Storage response example
201 OK
content-type: application/json; charset=UTF-8
{
"objectId": "qwerqwer-25a6-403f-981f-2cdd107fe3f9"
}