Benoit Tellier created JAMES-4209:
-------------------------------------
Summary: S3: ability to restore content from solely the object
store
Key: JAMES-4209
URL: https://issues.apache.org/jira/browse/JAMES-4209
Project: James Server
Issue Type: Improvement
Components: cassandra, mailbox, s3
Reporter: Benoit Tellier
h3. Goal
Recorvery Plan
GIVEN a major producton incident
WHEN I loose fully the Cassandra DB and its backup
THEN I want to be able to retrieve contents from S3 and set them back to users
Out of scope: folder structure and context (flag)
Recover point objective
GIVEN a major producton incident
WHEN I loose fully the Cassandra DB and need to restore a backup
THEN I want to be able to retrieve contents from S3 and set them back to users
between the time-of backup and time of the incident
Effectively achieve RPO of 0 for contents, only folder sorting is subject to a
loss.
h3. How
Optional config in cassandra.properties
{code:java}
mailbox.blob.recovery.mode=SYNCHRONOUS|ASYNCHRONOUS|NONE
{code}
NONE being the default.
The idea is to save a side objects recovery/YYY where YYY is the header blob
ID. It contains the corresponding body blobId.
Using the Delivered-To header It effectively allow rebuild of the message and
it allows identifying who it was delivered to.
Please note that natural generation of the header blob then allow time sorting
with a month granularity, allowing finner grain restore.
Special care about the GC: do not delete the sidecar, but piggy back its
deletion on actual content
h3. The restore script
Ship it as a binary in server/apps/distributed-app and use what we need from
the guice wiring. One could override the main class to actually run it...
We should be able to restrict to a single generation.
We should be able to provide a "since" date
-----------
Idea design done with Yann Biez
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]