|
|
Login/Register | Contact Us | 1+ 978-528-4660 |
@SnapshotSave
@SnapshotSave
@SnapshotSave — Saves the current database contents to disk.
Synopsis
ClientResponse client.callProcedure("@SnapshotSave", String
directory-path, String unique-ID, Integer
blocking-flag)
Description
The @SnapshotSave system procedure saves the contents of the current in-memory database to disk. Each node of the
database cluster saves its portion of the database locally. The snapshot consists of multiple files saved to the directory
specified by directory-path using unique-ID as a filename
prefix.
The fourth parameter, blocking-flag, specifies whether the save is performed
synchronously (thereby blocking any following transactions until the save completes) or asynchronously. If this parameter
is set to any non-zero value, the save operation will block any following transactions. If it is zero, others transactions
will be executed in parallel.
Note that it is normal to perform manual saves synchronously, to ensure the snapshot represents a known state of the database. However, automatic snapshots are performed asynchronously to reduce the impact on ongoing database activity.
See Chapter 9, Saving & Restoring a VoltDB Database for more information about saving and restoring VoltDB databases.
Return Values
The @SnapshotSave system procedure returns two different VoltTables, depending on the outcome of the request.
Option #1: one VoltTable with a row for every execution site. (That is, the number of hosts multiplied by the number of sites per host.).
| Name | Datatype | Description |
|---|---|---|
| HOST_ID | INTEGER | Numeric ID for the host node. |
| HOSTNAME | STRING | Server name of the host node. |
| SITE_ID | INTEGER | Numeric ID of the execution site on the host node. |
| RESULT | STRING | String value indicating the success ("SUCCESS") or failure ("FAILURE") of the request. |
| ERR_MSG | STRING | If the result is FAILURE, this column contains a message explaining the cause of the failure. |
Option #2: one VoltTable with a variable number of rows.
| Name | Datatype | Description |
|---|---|---|
| HOST_ID | INTEGER | Numeric ID for the host node. |
| HOSTNAME | STRING | Server name of the host node. |
| TABLE | STRING | The name of the database table. The contents of each table is saved to a separate file. Therefore it is possible for the snapshot of each table to succeed or fail independently. |
| RESULT | STRING | String value indicating the success ("SUCCESS") or failure ("FAILURE") of the request. |
| ERR_MSG | STRING | If the result is FAILURE, this column contains a message explaining the cause of the failure. |
Example
The following example uses @SnapshotSave to save the current database content to the path
/tmp/voltdb/backup/ using the unique identifier flight on each node of the
cluster.
Note that the procedure call will return successfully even if the save was not entirely successful. The information returned in the VoltTable array tells you what parts of the operation were successful or not. For example, save may succeed on one node but not on another.
The following example checks the return values and notifies the operator when portions of the save operation are not successful.
VoltTable[] results = null;
try { results = client.callProcedure("@SnapshotSave",
"/tmp/voltdb/backup/",
"flight", 1).getResults();
}
catch (Exception e) { e.printStackTrace(); }
for (int table=0; table<results.length; table++) {
for (int r=0;r<results[table].getRowCount();r++) {
VoltTableRow row = results[table].fetchRow(r);
if (row.getString("RESULT").compareTo("SUCCESS") != 0) {
System.out.printf("Site %s failed to write " +
"table %s because %s.\n",
row.getString("HOSTNAME"), row.getString("TABLE"),
row.getString("ERR_MSG"));
}
}
}
copyright 2012 VoltDB, Inc.
- Printer-friendly version
- Login or register to post comments
