On Mon, 4 Feb 2008, Howard Chu wrote:
Paul B. Henson wrote:
...
I took another quick look at the BerkeleyDB documentation on the Oracle
site and did not see anything that seemed relevant to copying databases
between machines. Could I trouble you for a URL to see whether there is
anything in those procedures that might have been violated?
http://www.oracle.com/technology/documentation/berkeley-db/db/ref/transapp/archival.html
At a guess, you failed to copy the transaction log files to the slaves.
Or failed to perform catastrophic recovery instead of normal recovery.
(I.e, db_recover must be invoked with the -c option.)
There's another catch: if the DB_LOG_AUTOREMOVE flag is in effect, then
taking a hot backup may result in a broken backup if any transaction logs
were removed during the backup. If you don't know about this and check
for it, you won't even know that the backup is bogus.
So, as a practical matter, if you're using DB_LOG_AUTOREMOVE, then you
need to shut down before trying to back up the database at the DB level.
(To quote the DBENV->set_flags() manual:
DB_LOG_AUTOREMOVE
If set, Berkeley DB will automatically remove log files that
are no longer needed. Automatic log file removal is likely to
make catastrophic recovery impossible.
...and catastrophic recovery is necessary for hot backups.)
Philip Guenther