mirror of
https://github.com/yasuhirokimura/db18
synced 2026-06-08 18:29:23 +00:00
136 lines
6.4 KiB
HTML
136 lines
6.4 KiB
HTML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Recovery and filesystem operations</title>
|
||
<link rel="stylesheet" href="gettingStarted.css" type="text/css" />
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
|
||
<link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
|
||
<link rel="up" href="transapp.html" title="Chapter 11. Berkeley DB Transactional Data Store Applications" />
|
||
<link rel="prev" href="transapp_journal.html" title="Using Recovery on Journaling Filesystems" />
|
||
<link rel="next" href="transapp_reclimit.html" title="Berkeley DB recoverability" />
|
||
</head>
|
||
<body>
|
||
<div xmlns="" class="navheader">
|
||
<div class="libver">
|
||
<p>Library Version 18.1.40</p>
|
||
</div>
|
||
<table width="100%" summary="Navigation header">
|
||
<tr>
|
||
<th colspan="3" align="center">Recovery and filesystem operations</th>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%" align="left"><a accesskey="p" href="transapp_journal.html">Prev</a> </td>
|
||
<th width="60%" align="center">Chapter 11. Berkeley DB Transactional Data Store Applications </th>
|
||
<td width="20%" align="right"> <a accesskey="n" href="transapp_reclimit.html">Next</a></td>
|
||
</tr>
|
||
</table>
|
||
<hr />
|
||
</div>
|
||
<div class="sect1" lang="en" xml:lang="en">
|
||
<div class="titlepage">
|
||
<div>
|
||
<div>
|
||
<h2 class="title" style="clear: both"><a id="transapp_filesys"></a>Recovery and filesystem operations</h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p>
|
||
The Berkeley DB API supports creating, removing and
|
||
renaming files. Creating files is supported by the <a href="../api_reference/C/dbopen.html" class="olink">DB->open()</a>
|
||
method. Removing files is supported by the <a href="../api_reference/C/envdbremove.html" class="olink">DB_ENV->dbremove()</a> and
|
||
<a href="../api_reference/C/dbremove.html" class="olink">DB->remove()</a> methods. Renaming files is supported by the
|
||
<a href="../api_reference/C/envdbrename.html" class="olink">DB_ENV->dbrename()</a> and <a href="../api_reference/C/dbrename.html" class="olink">DB->rename()</a> methods. (There are two methods
|
||
for removing and renaming files because one of the methods is
|
||
transactionally protected and one is not.)
|
||
</p>
|
||
<p>
|
||
Berkeley DB does not permit specifying the <a href="../api_reference/C/dbopen.html#open_DB_TRUNCATE" class="olink">DB_TRUNCATE</a>
|
||
flag when opening a file in a transaction-protected
|
||
environment. This is an implicit file deletion, but one that
|
||
does not always require the same operating system file
|
||
permissions as deleting and creating a file do.
|
||
</p>
|
||
<p>
|
||
If you have changed the name of a file or deleted it
|
||
outside of the Berkeley DB library (for example, you
|
||
explicitly removed a file using your normal operating system
|
||
utilities), then it is possible that recovery will not be able
|
||
to find a database to which the log refers. In this case, the
|
||
<a href="../api_reference/C/db_recover.html" class="olink">db_recover</a> utility will produce a warning message, saying it was
|
||
unable to locate a file it expected to find. This message is
|
||
only a warning because the file may have been subsequently
|
||
deleted as part of normal database operations before the
|
||
failure occurred, so is not necessarily a problem.
|
||
</p>
|
||
<p>
|
||
Generally, any filesystem operations that are performed
|
||
outside the Berkeley DB interface should be performed at the
|
||
same time as making a snapshot of the database. To perform
|
||
filesystem operations correctly, do the following:
|
||
</p>
|
||
<div class="orderedlist">
|
||
<ol type="1">
|
||
<li>
|
||
<p>
|
||
Cleanly shut down database operations.
|
||
</p>
|
||
<p>
|
||
To shut down database operations cleanly, all
|
||
applications accessing the database environment must
|
||
be shut down and a transaction checkpoint must be
|
||
taken. If the applications are not implemented so they
|
||
can be shut down gracefully (that is, closing all
|
||
references to the database environment), recovery must
|
||
be performed after all applications have been killed
|
||
to ensure that the underlying databases are consistent
|
||
on disk.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
Perform the filesystem operations; for example,
|
||
remove or rename one or more files.
|
||
</li>
|
||
<li>
|
||
<p>
|
||
Make an archival snapshot of the database.
|
||
</p>
|
||
<p>
|
||
Although this step is not strictly necessary, it is
|
||
strongly recommended. If this step is not performed,
|
||
recovery from catastrophic failure will require that
|
||
recovery first be performed up to the time of the
|
||
filesystem operations, the filesystem operations be
|
||
redone, and then recovery be performed from the
|
||
filesystem operations forward.
|
||
</p>
|
||
</li>
|
||
<li>
|
||
Restart the database applications.
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr />
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"><a accesskey="p" href="transapp_journal.html">Prev</a> </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="u" href="transapp.html">Up</a>
|
||
</td>
|
||
<td width="40%" align="right"> <a accesskey="n" href="transapp_reclimit.html">Next</a></td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left" valign="top">Using Recovery on Journaling Filesystems </td>
|
||
<td width="20%" align="center">
|
||
<a accesskey="h" href="index.html">Home</a>
|
||
</td>
|
||
<td width="40%" align="right" valign="top"> Berkeley DB recoverability</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|