Implement mysql point in time recovery
Trove and Point-in-time recovery
OpenStack DBaaS Trove is able to perform instance restoration (whole new instance, from scratch) from previously stored backup in remote storage (OpenStack Swift, Amazon AWS S3, etc). From administration/
Restore gives an ability to spin-up new instance from backup (as mentioned earlier), but the Recovery gives an ability to restore already running instance from backup. For the beginning Trove would be able to recover/restore running instance from full backup.
Trove core ReST API and Point-in-Time Recovery/Restore flow
ReST routes
HTTP method
Routes
POST
{tenant_
or
{tenant_
Request body
“recovery”: {
“instance”: UUID,
“backup”: UUID,
}
Response object
“recovery”: {
“id”: “instance_id”,
“name”: “instance_name”,
“status”: “BUILDING”,
“datastore”: “mysql”,
“recovered_
“point_
}
Trove taskmanager RPC API and Point-in-Time Recovery/Restore flow
RPC message
RPC method
Method parameters
do_instance_
instance_id
backup_id
RPC message type
CAST with poll until instance reach ACTIVE status.
Trove guestagent RPC API and Point-in-Time Recovery/Restore flow
RPC message
RPC method
Method parameters
do_recovery
}
RPC message type
CAST
Method implementation
No new code. Re-used restore functionality.
Proposed implementation for Trove and for Python-troveclient
Trove: [1]
Python-troveclient: [2]
Useful links
[1] https:/
[2] https:/
Whiteboard
Gerrit topic: https:/
Addressed by: https:/
WIP Add point in time recovery
Work Items
Dependency tree
* Blueprints in grey have been implemented.