On Sun, Jun 2, 2013 at 7:06 PM, sir_wally_lewis <rgilland1...@gmail.com>wrote:

>
>
> I have in the past also put forward a database level suggestion by
> enhancements to "gbak"
>
> The suggestion is:
>
> 1. gbak run with two new options to "-xbackup op.fbk" "-xrestore op2.fdb"
> 2. this option backups up to op.fbk.
> 3. Also server keeps a separate file for new changes to database during
> process.
> 4. server then restores op2.fdb and at the end attaches all new changes to
> op2.fdb.
> 5. shuts down live database and replaces it.
>
> I think it can be done.
>

That's one of the challenges that caused nbackup to be created. As you
know, gbak
restore creates new, empty database, then creates most of the metadata for
the database,
then loads the data from the backup file, then finishes metadata.  The
metadata is split
to avoid problems with foreign key and other constraints during the data
load phase.
That means that all the simple ways to identify tables and records (i.e.
table and record
ids) change.  I'm not convinced that you can replay a series of inserts,
updates, and
deletes and guarantee that the results will be the same as the original.

Yes, I know that's how MySQL does replication - it keeps a statement log
and applies
it at the remote site. I spent considerable time trying to make that work
with MVCC -
and was never convinced that it was right there either.  Yes, it can be
made to work if
the database and applications are designed to work from a statement log,
but if that
feature were to be part of gbak, it would have to work every time with any
database.

My advice to those who want a backup that's up to the minute is to use
nbackup.
Use gbak for archival storage and to avoid major headaches like running out
of
transaction ids.  However, if you have a critical site and need
reliability, replicate.

Good luck,

Ann
IBPhoenix, your source for Firebird support


[Non-text portions of this message have been removed]

Reply via email to