<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On 10 Oct 2011, at 14:08, Joshua Muzaaya wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><b>Questions</b>:<br><b>1.<span class="Apple-converted-space"> </span></b>What would a Database administrator do if mnesia generates events of<span class="Apple-converted-space"> </span><code>inconsistent_database, starting to run database behind a partitioned network</code>, in a situation where setting a<code>mnesia master node</code><span class="Apple-converted-space"> </span>is not desirable (for fear of data loss) ?<span class="Apple-converted-space"> </span><br></span></blockquote><div><br></div><div>Take a look at <a href="http://github.com/esl/unsplit">http://github.com/esl/unsplit</a></div><div><br></div><div>It was designed to help resolve netsplits.</div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><b>2.<span class="Apple-converted-space"> </span></b>What is the consequence of the mnesia event<span class="Apple-converted-space"> </span><code>inconsistent_database, starting to run database behind a partitioned network</code><span class="Apple-converted-space"> </span>as regards my application ? What if i do not react to this event and let things continue the way they are ? am i loosing data ?<span class="Apple-converted-space"> </span><br></span></blockquote><div><br></div><div>The event basically means that the returning node did not synch its tables with the running cluster. Something needs to be done at this point. The unsplit application triggers on the 'inconsistent_database' event and performs an automatic merge. Note that you have to plan your database in order to make such a merge possible.</div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><b>3.<span class="Apple-converted-space"> </span></b>In large mnesia clusters, what can one do if Mnesia goes down together with the Erlang VM on a remote site ? are there any known good methods of automatically handling this situation ?<span class="Apple-converted-space"> </span><br></span></blockquote><div><br></div><div>From a mnesia/erlang point of view, this is the same as when a local node dies. Could you clarify the question, please?</div><div><br></div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><b>4.<span class="Apple-converted-space"> </span></b>There times when one or two nodes are unreachable due to network problems or failures, and mnesia on the surviving Node reports that a given file does not exist especially in cases where you have<span class="Apple-converted-space"> </span><code>indexes</code>. So at run time, what would be the behavior of my application if some replicas go down. Would you advise me to have a master node within a mnesia cluster ?<span class="Apple-converted-space"> </span><br></span></blockquote><br></div><div>When dealing with fragmentation in mnesia, you may want to take control over the allocation of fragments to nodes. While mnesia offers to do this automatically, you can be explicit about the location of fragments, and you can also move them around.</div><div><br></div><div>The automatic indexing is problematic with fragmented tables. It's better to create your own 'index', using a second mnesia table.</div><div><br></div><div>BR,</div><div>Ulf W</div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div>Ulf Wiger, CTO, Erlang Solutions, Ltd.</div><div><a href="http://erlang-solutions.com">http://erlang-solutions.com</a></div><div><br></div></span><br class="Apple-interchange-newline">
</div>
<br></body></html>