Difference between revisions of "Trove/volume-data-snapshot-design"
< Trove
(→Guest Agent) |
(→Impacts) |
||
Line 21: | Line 21: | ||
=== Impacts === | === Impacts === | ||
+ | Changes the behavior to the backups made by Trove, it impacts at already implemented backuping process through native database tools (mysqldump, nodetool, etc.) and the Swift as storage container service. Changes are backward compatible. | ||
------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | ||
==== Configuration ==== | ==== Configuration ==== |
Revision as of 19:44, 2 April 2014
Contents
Data volume snapshot
Description
Volumes Snapshots
- This introduction provides a high level overview of the two basic resources offered by the OpenStack Block Storage service. The first is Volumes and the second is Snapshots which are derived from Volumes.
Volumes
- Volumes are allocated block storage resources that can be attached to instances as secondary storage or they can be used as the root store to boot instances. Volumes are persistent R/W Block Storage devices most commonly attached to the Compute node via iSCSI.
Snapshots
- A Snapshot in OpenStack Block Storage is a read-only point in time copy of a Volume. The Snapshot can be created from a Volume that is currently in use (via the use of '--force True') or in an available state. The Snapshot can then be used to create a new volume via create from snapshot.
Justification/Benefits
- Data could be backued in two ways:
- :Standart backup strategies (innobackupex, nodetoolsnapshot) + Swift container (already implemented).
- :Snapshot of the attached block storage (not implemented).
- Basically, its the another way of backupin' data through standard OpenStack capabilities.
Impacts
Changes the behavior to the backups made by Trove, it impacts at already implemented backuping process through native database tools (mysqldump, nodetool, etc.) and the Swift as storage container service. Changes are backward compatible.
Configuration
- No configuration is needed
Database
Data snapshot table:
- id: UUID (string) - instance_id: UUID (string) (i guess it could be optional) - volume_id: UUID (string) - datastore: UUID (string) - datastore_manager: String - datastore_version: UUID (string) - created: timestamp - deleted: timestamp
Public API
Core API extension
API call | HTTP method | Route |
---|---|---|
Create data snapshot | POST | /{tenant_id}/instances/{instance_id}/snapshots/create |
Apply data snapshot | POST | /{tenant_id}/instances/{instance_id}/snapshots/apply |
List data snapshot | GET | /{tenant_id}/instances/snapshots |
Show data snapshots | GET | /{tenant_id}/instances/snapshots/{id} |
Delete data snapshot | POST | /{tenant_id}/instances/snapshot/{id} |
Create data snapshot
CLI interface
- trove data-snapshot-create <instance>
Request body
- None
Response object
"data_snapshot": { "instance_id": "UUID" "volume_id": "UUID", "size": "100Mb" "datastore": "UUID" or "name", "datastore_version": "UUID" "created": "2011-01-22T13:25:27-06:00" }
Apply data snapshot
CLI interface
- trove data-snapshot-apply <instance>
Request body
"data_snapshot": { "data_snapshot": "UUID" }
Response object
None
List data snapshot
CLI interface
- trove data-snapshot-list
Request body
- None
Response object
[ "data_snapshot_1": { "id": "UUID" "instance_id": "UUID" "volume_id": "UUID", }, "data_snapshot_2": { "id": "UUID" "instance_id": "UUID" "volume_id": "UUID", } ]
Show data snapshot
CLI interface:
trove data-snapshot-show <data_snapshot>
Request body
- None
Response object
{ "data_snapshot_1": { "id": "UUID" "instance_id": "UUID" "volume_id": "UUID", "size": "100Mb" "datastore": "UUID" or "name", "datastore_version": "UUID" "created": "2011-01-22T13:25:27-06:00" } }
Delete data snapshot
CLI interface
trove data-snapshot-delete <data_snapshot>
Request body
- None
Response object
- None
Internal API
From trove-api to trove-taskamanger
- Message: create_data_snapshot
- Parameters: instance_id, volume_id
- Message type: cast
- Message: apply_data_snapshot
- Parameters: instance_id, volume_id
- Message type: cast
- Message: delete_data_snapshot
- Parameters: instance_id, volume_id
- Message type: cast
From trove-taskamanger to trove-guestagent
- Message: apply_data_snapshot
- Parameters: device_path (where the volume mounted)
- Message type: cast
Guest Agent
Changes are backward compatible. Changes will be available for all datastores. This method of the backuping is generic for the all datastores types/versions.