<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style>
<!--
@font-face
        {font-family:"Cambria Math"}
@font-face
        {font-family:Calibri}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif"}
a:link, span.MsoHyperlink
        {color:#0563C1;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:#954F72;
        text-decoration:underline}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New"}
span.EmailStyle17
        {font-family:"Courier New";
        color:windowtext}
span.PlainTextChar
        {font-family:"Courier New"}
.MsoChpDefault
        {font-family:"Calibri","sans-serif"}
@page WordSection1
        {margin:1.0in 1.0in 1.0in 1.0in}
-->
</style><style id="owaParaStyle" type="text/css">P {margin-top:0;margin-bottom:0;}</style>
</head>
<body ocsi="0" fpstyle="1" lang="EN-US" link="#0563C1" vlink="#954F72">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">I've been independently been looking at something similar. Some things of interest:<br>
https://blueprints.launchpad.net/nova/+spec/quiesced-image-snapshots-with-qemu-guest-agent<br>
<br>
Particularly interesting to trove may be this example hook:<br>
<a href="https://github.com/qemu/qemu/blob/master/scripts/qemu-guest-agent/fsfreeze-hook.d/mysql-flush.sh.sample" target="_blank">https://github.com/qemu/qemu/blob/master/scripts/qemu-guest-agent/fsfreeze-hook.d/mysql-flush.sh.sample</a><br>
<br>
Thanks,<br>
Kevin<br>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<hr tabindex="-1">
<div style="direction: ltr;" id="divRpF635885"><font color="#000000" face="Tahoma" size="2"><b>From:</b> Amrith Kumar [amrith@tesora.com]<br>
<b>Sent:</b> Monday, April 14, 2014 4:46 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> [openstack-dev] [trove] Blueprint Review: "Allow volume snapshot as another way for data backuping"<br>
</font><br>
</div>
<div></div>
<div>
<div class="WordSection1">
<p class="MsoPlainText">At the blueprint review for the Trove team on April 14th, we reviewed "Allow volume snapshot as another way for data backuping" (<a href="https://blueprints.launchpad.net/trove/+spec/volume-snapshot" target="_blank">https://blueprints.launchpad.net/trove/+spec/volume-snapshot</a>).</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">The detailed specification is available at <a href="https://wiki.openstack.org/wiki/Trove/volume-data-snapshot-design" target="_blank">
https://wiki.openstack.org/wiki/Trove/volume-data-snapshot-design</a></p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">In this blueprint, the intent is to provide a mechanism by which a snapshot of the data store can be generated for the purpose of backup.</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">The theory is that the backup workflow would be in three steps:</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">1. flush database and mark read-only</p>
<p class="MsoPlainText">2. take snapshot</p>
<p class="MsoPlainText">3. revert database to normal operation</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">In practice, if using something like LVM, the database need be read-only only for enough time to start the snapshot as LVM would ensure that the snapshot is consistent as of some point in time. However, even with that, many details remain
 that are potentially very important.</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">IMHO the blueprint should be significantly revised before re-review.
</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">(a) In particular, it would be good to understand exactly what the limitations of the proposed implementation are likely to be. This could include things like configurations that would work, storage engines that would be supported (or
 not), performance considerations, etc.,</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">(b) It would also be important in this particular case to understand (for datastores that will be implemented in this iteration) how the system will achieve step 1 above.
</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">(c) Given that this is supposed to be a feature that would work for multiple datastores, ease of implementing a new data store should be given some consideration. It would be worthwhile if the blueprint included information on how this
 would be for a datastore to be implemented in the future. </p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">One recommendation is that a simple illustration of the framework being implemented here (that could be shared across datastores) is provided, as well as details about the implementation (maybe only at pseudo-code level) of the datastores
 that will be implemented in the initial phase. One could easily conceive of a framework that provided default stubs that meaningfully responded with a “Not Supported” error, and an implementer could provide the appropriate code for the datastore in question
 and things would Just Work™ </p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">(d) Some more information about how the ‘restore’ would be orchestrated would be valuable. Similar information as requested above for the ‘backup’ would be worthwhile adding to the blueprint.
</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">(e) With respect to ‘restore’, [this point was brought up during the review by dougshelley66 and vgnbkr] the “point in time recovery” blueprint review just before this one yielded a significant discussion around restoring a backup over
 top of the running instance. The concerns were that doing this could result in the loss of user data. In the end, that feature was removed from the blueprint. It seems like this blueprint has the same property on restore - that being - that restoring the snapshot
 would eliminate the volume that currently houses the user's data. Why wouldn't that be a concern for this approach?
</p>
<p class="MsoPlainText"> </p>
<p class="MsoPlainText">I'm not intending to summarize the discussion, nor present feedback from all parties to the review; others at the review had other concerns as well and I'll let them contribute those to this mail thread if they so desire.
</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">-amrith</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">--</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">Amrith Kumar, CTO, Tesora</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New""> </span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">Twitter: @amrithkumar</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">Email: amrith@tesora.com</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt; font-family:"Courier New"">Skype: amrith.skype</span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">Web: http://www.tesora.com
</span></p>
<p class="MsoNormal"> </p>
</div>
</div>
</div>
</div>
</body>
</html>