libdb/docs/programmer_reference/transapp_journal.html
2011-09-13 13:44:24 -04:00

109 lines
4.7 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>Using Recovery on Journaling Filesystems</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_hotfail.html" title="Hot failover" />
<link rel="next" href="transapp_filesys.html" title="Recovery and filesystem operations" />
</head>
<body>
<div xmlns="" class="navheader">
<div class="libver">
<p>Library Version 11.2.5.2</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">Using Recovery on Journaling Filesystems</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="transapp_hotfail.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_filesys.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_journal"></a>Using Recovery on Journaling Filesystems</h2>
</div>
</div>
</div>
<p>
In some cases, the use of meta-data only journaling file systems can
lead to log file corruption. The window of vulnerability is quite
small, but if the operating system experiences an unclean shutdown
while Berkeley DB is creating a new log file, it is possible that upon
file system recovery, the system will be in a state where the log file
has been created, but its own meta-data has not.
</p>
<p>
When a log file is corrupted to this degree, normal recovery can fail
and your application may be unable to open your environment. Instead,
an error something like this is issued when you attempt to run normal
recovery on environment open:
</p>
<pre class="programlisting"> Ignoring log file: /var/dblog/log.0000000074: magic number
6c73732f, not 40988
Invalid log file: log.0000000074: Invalid argument
PANIC: Invalid argument
process-private: unable to find environment
txn_checkpoint interface requires an environment configured for
the transaction subsystem </pre>
<p>
In this case, it may be possible to successfully recover the
environment by ignoring the log file that was being created — to
do this, rename the log file with the highest number to a temporary
name:
</p>
<pre class="programlisting"> mv DBHOME/log.000000XXX my-temporary-log-file </pre>
<p>
and try running normal environment recovery again. If recovery is
successful, and your application is able to open the environment, then
you can delete the log file that you renamed.
</p>
<p>
If recovery is not successful, then you must perform a catastrophic
recovery from a previous backup.
</p>
<p>
This situation has been shown to occur when using ext3 in writeback
mode, but other journaling filesystems could exhibit similar behavior.
</p>
<p>
To be absolutely certain of your application's ability to recover your
environment in the event of a system crash, either use non-journaling
filesystems, or use a journaling filesystem in a safe (albeit slower)
configuration, such as ext3 in ordered mode.
</p>
</div>
<div class="navfooter">
<hr />
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left"><a accesskey="p" href="transapp_hotfail.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_filesys.html">Next</a></td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Hot failover </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>
<td width="40%" align="right" valign="top"> Recovery and filesystem operations</td>
</tr>
</table>
</div>
</body>
</html>