[erlang-questions] mnesia backup oddity

Hakan Mattsson <>
Wed Feb 27 10:37:54 CET 2008


The Mnesia backup is performed in several phases:

  - First a checkpoint is activated in order to keep
    track of the database state as it was at that
    timepoint.

  - Then Mnesia performs a first iteratation over the
    tables involved in the checkpoint and puts their
    contents into the backup.

  - After that Mnesia performs a second iteration over
    the tables involved in the checkpoint in order to
    compensate for updates performed during the backup.
    During this phase more backup items (records and
    delete marks) are added to the backup.

  - At last the checkpoint is deactivated.

When iterating over a backup file you should interpret
the backup items in the file as operations (write and
delete), not as plain data. This means that when you
find the first occurrence of a record you should expect
a delete mark and/or yet another version of that the
record later in the backup file.

/Håkan

On Tue, 26 Feb 2008, Lukas Larsson wrote:

LL> I've been playing around with mnesia:backup and noticed an oddity with
LL> the data outputted by it. Let's say I have a table called myTable with
LL> three elements. The mnesia:backup dump should look something like
LL> this:
LL> 
LL> [{schema,myTable,
LL>          [{name,myTable},
LL>           {type,ordered_set},
LL>           {ram_copies,[]},
LL>           {disc_copies,[''']},
LL>           {disc_only_copies,[]},
LL>           {load_order,0},
LL>           {access_mode,read_write},
LL>           {index,[]},
LL>           {local_content,false},
LL>           {record_name,myTable},
LL>           {snmp,[{key,integer}]},
LL>           {attributes,[key,data,datatwo]},
LL>           {user_properties,[]},
LL>           {frag_properties,[]},
LL>           {cookie,{{1201,677139,173385},''}},
LL>           {version,{{2,0},[]}}]}].
LL> [{myTable,1,"mydata","mydata"},
LL>  {myTable,2,"mydata2","mydata2"}].
LL> 
LL> This is what usually is outputted. Sometimes however I get the following:
LL> 
LL> [{schema,myTable,
LL>          [{name,myTable},
LL>           {type,ordered_set},
LL>           {ram_copies,[]},
LL>           {disc_copies,[''']},
LL>           {disc_only_copies,[]},
LL>           {load_order,0},
LL>           {access_mode,read_write},
LL>           {index,[]},
LL>           {local_content,false},
LL>           {record_name,myTable},
LL>           {snmp,[{key,integer}]},
LL>           {attributes,[key,data,datatwo]},
LL>           {user_properties,[]},
LL>           {frag_properties,[]},
LL>           {cookie,{{1201,677139,173385},''}},
LL>           {version,{{2,0},[]}}]}].
LL> [{myTable,1,"mydata","mydata"},
LL>  {myTable,2,"mydata2","mydata2"}].
LL> [{myTable,1},
LL>  {myTable,2,"mydata2","mydata2"}].
LL> 
LL> The entry is duplicated and the first entry of the second list (I've
LL> only seen this happen with two entries in the table) is only the table
LL> name and the key. Does anyone have any idea about why I'm getting the
LL> extra list in the backup file? The strangest thing is that it only
LL> seems to be happening every once in a while, and not whenever I call
LL> mnesia:backup.
LL> 
LL> Lukas
LL> Erlang Training & Consulting Ltd
LL> _______________________________________________
LL> erlang-questions mailing list
LL> 
LL> http://www.erlang.org/mailman/listinfo/erlang-questions
LL> 


More information about the erlang-questions mailing list