Forum: Managing VoltDB

Post: Managing Snapshot Schedule

Managing Snapshot Schedule
Feb 9, 2016

I want to take snapshot at specific time (like every 00 and 30 min) to avoid high load and scheduled process from clients.

In my understanding,
If deployment.xml set like folow, automated snapshots take every 30min based at cluster up time.
<snapshot prefix="flightsave" frequency="30m" retain="3" />
Timing of snapshot is influenced by other process (e.g. @UpdateApplicationCatalog), and time of snapshot will change.

Is there any way to take snapshot at specific time by using VoltDB function?
I'm considering to combine both cron and "voltadmin save".

Any thoughts gratefully received.
Feb 11, 2016
Your understanding is correct, and most optimal solution to taking a snapshots every 30 mins by editing with the deployment file with the stated changes. I would recommend this option over your alternative, cron and voltadmin save, because it becomes an external process you'll need to keep track of and the onus is on you to manage all the manual snapshots you take as opposed to having VoltDB only retain the last 3 most recent snapshots. Currently, there is no VoltDB function to trigger a snapshot at a specified time, but your corn/voltadmin save can fill that need.
Peter Zhao
Feb 11, 2016
Just to clarify:
- You can use automated snapshots with a 30m frequency, but the timing is based on when the database was started, not every hour on the 00 and 30 minute marks. There is NOT currently a way to specify a time when these should run. However it does automatically retain a specified number of snapshots (it automatically deletes older ones)
- A cron job that calls "voltadmin save" can request the snapshots at the exact times you want. The job would be something extra to manage and it does not handle deletion of older snapshots.
Feb 12, 2016
Thank you for reply.

I'm going to set cron job to take manual snapshot and delete old snapshot.