<div dir="ltr"><div><div><div><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-align:justify" id="docs-internal-guid-b15a5518-91f0-3c54-a0a5-109bf345d025"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Let me elaborate a bit.</span></p>
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-align:justify"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Point in time recovery means that:</span></p>
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">I, as the database server administrator, want to restore data from the backup (that has “created” time equals to X) to </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">already running server</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">, i </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">don’t want to spin-up new server</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">, i want this one. </span></p>
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">Point-in-time</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"> is nothing else than point in time when backup was created.</span></p>
<br><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify">
<span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Trove is only able to recreate instance from new backup. I suggested feature that allows to restore/recover data at the server that </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">already running</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">.</span></p>
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">The goal to provide a developer with an API call for /recover the </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">already running </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">instance from </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">backup</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"> that </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">{"created": "2014-03-04 00:00:00.00Z"}</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">. It clearly written in the initial mail.</span></p>
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">The first iteration will cover point-in-time recovery from full backup.</span></p>
<br><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"></span><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:36pt;text-indent:36pt;text-align:justify">
<span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Simple use case, my quota for instances equals 1 (allowed only one instance to be provisioned). Somehow, after long period of time my database got corrupted. So, i need to recover it. Hopefully i’ve got the backup that was </span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:bold;font-style:italic;font-variant:normal;text-decoration:none;vertical-align:baseline">COMPLETED</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"> not so long ago. So, i want to recover data from it. </span></p>
<span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Unfortunately, Trove doesn’t able to do that, because there’s no such feature. If Trove would able to do that, users would be able to recover their own servers without provisioning emergency ones, from scratch, that restored from given backup.</span><span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"><br>
<br></span></div><span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Best regards,<br>
</span></div><span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline">Denis Makogon<br>
</span></div><span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"><a href="mailto:dmakogon@mirantis.com">dmakogon@mirantis.com</a><br>
</span><div><div><div><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"></span><div class="gmail_extra">
<span style="font-size:16px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline"><a href="http://www.mirantis.com">www.mirantis.com</a></span><br>
<br><div class="gmail_quote">On Wed, Mar 5, 2014 at 3:22 AM, Doug Shelley <span dir="ltr"><<a href="mailto:doug@tesora.com" target="_blank">doug@tesora.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div link="blue" vlink="purple" style="word-wrap:break-word" lang="EN-CA">
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri","sans-serif";color:rgb(31,73,125)">Kevin – I agree with your “What I’m worried about” comment. I think we need to move further down the path with the base backup/restore and the replication/clustering
features across more datastores before pushing mysql too far ahead. Given the growth of the team over the last 6 months or so I definitely agree that more bench depth on datastores would be of benefit to the project and community.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri","sans-serif";color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri","sans-serif";color:rgb(31,73,125)">Doug<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri","sans-serif";color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:"Calibri","sans-serif";color:rgb(31,73,125)"><u></u> <u></u></span></p>
<div>
<div style="border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181,196,223) -moz-use-text-color -moz-use-text-color;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:10pt;font-family:"Tahoma","sans-serif"" lang="EN-US">From:</span></b><span style="font-size:10pt;font-family:"Tahoma","sans-serif"" lang="EN-US"> Kevin Conway [mailto:<a href="mailto:kevinjacobconway@gmail.com" target="_blank">kevinjacobconway@gmail.com</a>]
<br>
<b>Sent:</b> March-04-14 1:20 PM</span></p><div class=""><br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
</div><div><div class="h5"><b>Subject:</b> Re: [openstack-dev] [TROVE] Point in time recovery design<u></u><u></u></div></div><p></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Have we discussed what level of granularity will be supported by point in time recovery?<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">For example, there is already an initial implementation of incremental backups/restores for the MySQL/InnoDB family of data stores. Is that not already a form
of point in time recover?<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Is the goal to provide a developer with an API call for /recover {"at": "2014-03-04 00:00:00.00Z"}? Supporting a true point in time recovery like that is going
to be very difficult. In a former life I worked with a group of DBAs that managed a large Oracle deployment and dealt with point in time recovery quite a bit. In fact, the ability to recover to a particular transaction ID from the bin logs rather than just
a timestamp was critical to support any kind of fault tolerance with our replication setup (just a heads up that these things are likely going to be problems when we combine backup/restore with clustering/replication).<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Incremental backups and point in time recovery are great features that I would love to see a part of Trove. What I'm worried about is that we're pushing forward
on these features without enough datastore experts weighing in on what realistic expectations are for these features across data stores and how these features might impact replication/clustering. Don't get me wrong, Xtrabackup is a neat tool, but I don't want
to see us build an entire API spec around it.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">As it is, Trove only supports backups for MySQL. We don't even support incremental backups for MySQL; only the subset of MySQL stores running InnoDB. I'd like
to see more backup operations implemented by the requested/merged data stores before we start talking about point in time recovery.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div style="border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181,196,223) -moz-use-text-color -moz-use-text-color;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:"Calibri","sans-serif"">From:
</span></b><span style="font-size:11pt;font-family:"Calibri","sans-serif"">Daniel Morris <</span><a href="mailto:daniel.morris@RACKSPACE.COM" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">daniel.morris@RACKSPACE.COM</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">openstack-dev@lists.openstack.org</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Date: </b>Tuesday, March 4, 2014 10:36 AM<br>
<b>To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">openstack-dev@lists.openstack.org</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Subject: </b>Re: [openstack-dev] [TROVE] Point in time recovery design<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
</div></div><div>
<div><div><div class="h5">
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Nice write-up Denis. Generally, I think this should merge with the work going on for scheduled tasks and scheduled backups.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><a href="https://wiki.openstack.org/wiki/Trove/scheduled-tasks" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">https://wiki.openstack.org/wiki/Trove/scheduled-tasks</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Point in time recovery was one of the original goals of the scheduled / automated backup work, but had not been fully worked out. Currently this work is sitting
idle - </span><a href="https://review.openstack.org/#/c/73702/" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">https://review.openstack.org/#/c/73702/</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">I believe that at the time this was originally discussed, the idea was that this would be handled on a new instance creation (not an active instance), and would
be accomplished via a new instance creation as follows:<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">POST /instances<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">{<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "instance": {<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "flavorRef": "</span><a href="https://service/v1.0/1234/flavors/1" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">https://service//v1.0/1234/flavors/1</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">", <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "name": "myinstance", <u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "volume": {<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "size": 2<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> }<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "restorePoint": {<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "point_in_time" : "2012-03-28T22:00Z",<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> "instanceRef": "</span><a href="https://service/v1.0/1234/instances/2450c73f-7805-4afe-a42c-4094ab42666b" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">https://service/v1.0/1234/instances/2450c73f-7805-4afe-a42c-4094ab42666b</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">"<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> }<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""> }<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">}<u></u><u></u></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Regardless of the API design (up for debate), we need this capability integrated and just need to work out the best way to do it.<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Daniel<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
<div style="border-width:1pt medium medium;border-style:solid none none;border-color:rgb(181,196,223) -moz-use-text-color -moz-use-text-color;padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:"Calibri","sans-serif"">From:
</span></b><span style="font-size:11pt;font-family:"Calibri","sans-serif"">Denis Makogon <</span><a href="mailto:dmakogon@mirantis.com" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">dmakogon@mirantis.com</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Reply-To: </b>"OpenStack Development Mailing List (not for usage questions)" <</span><a href="mailto:openstack-dev@lists.openstack.org" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">openstack-dev@lists.openstack.org</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Date: </b>Tuesday, March 4, 2014 5:15 AM<br>
<b>To: </b>OpenStack Development Mailing List <</span><a href="mailto:openstack-dev@lists.openstack.org" target="_blank"><span style="font-size:11pt;font-family:"Calibri","sans-serif"">openstack-dev@lists.openstack.org</span></a><span style="font-size:11pt;font-family:"Calibri","sans-serif"">><br>
<b>Subject: </b>[openstack-dev] [TROVE] Point in time recovery design<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
</div></div><blockquote style="border-width:medium medium medium 4.5pt;border-style:none none none solid;border-color:-moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(181,196,223);padding:0cm 0cm 0cm 4pt;margin:5pt 0cm 5pt 3.75pt">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<h1 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-align:center" align="center">
<span style="font-size:16pt;font-family:"Arial","sans-serif";font-weight:normal">Trove. Point-in-Time recovery.</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h1>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:12pt;margin-left:3.75pt">
<span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><br>
<br>
<br>
<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>1.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.tg53tr6tfa3" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Introduction</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">.<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>2.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.rnvnnwld05c2" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">What is a point
in time recovery?</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>3.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.cp013g5it8qq" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">What does it take
to do a point in time recovery?</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>4.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.oe6kdjz502c7" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">What to consider
once you know your database is corrupted?</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>5.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.1m5g1t97bfdx" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Trove and Point-in-time
recovery.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>6.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.qjqnx4eo6du8" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Trove core ReST
API and Point-in-Time Recovery/Restore flow.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>1.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.yedhftl8z7td" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">ReST routes.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>2.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.7grnwb9z2u3g" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Request body.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>3.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.3n48u9fe0w43" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Response object.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>7.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.1pr74mrhlana" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Trove taskmanager
RPC API and Point-in-Time Recovery/Restore flow.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>1.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.hk9iralbbn60" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">RPC message.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>2.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.kgt3wgj6q4j7" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">RPC message type.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>8.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.gme8lf1lvok2" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Trove guestagent
RPC API and Point-in-Time Recovery/Restore flow.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>1.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.wxienab8nvi7" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">RPC message.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>2.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.stpp0ym7nd04" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">RPC message type.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:72pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>3.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.y4xmxn4pju8f" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Method implementation.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>9.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.5bpxcfj9gujs" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Proposed implementation
for Trove and for Python-troveclient.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:36pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>10.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.p0h05fqgo9oj" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">Useful links.</span></a><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><u></u><u></u></span></p>
<div><div class="h5">
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:0cm;text-align:justify">
<a href="https://docs.google.com/a/mirantis.com/document/d/12qHHYCQ3BTOKCEcbfp-75NPJc15xPD01WEQe9OmyOxc/edit#heading=h.p0h05fqgo9oj" target="_blank"><span style="font-size:13pt;text-decoration:none;font-family:"Arial","sans-serif"">I</span></a><span style="font-size:13pt;font-family:"Arial","sans-serif"">ntroduction</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-align:justify;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Every once in a while, an event might happen that corrupts a database. We have all made a stupid mistake at least once that had trashed a database. When this happens what do you do?
If you do not have a database backup, then you had better own up to the problem you caused and tell your boss that you screwed up. If you do have at least a complete database backup then you most likely will be able to recover the corrupted database, up to
the point that you corrupted the data. This article will discuss how to use a point in time restore to recover your databases.
</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-align:justify;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">If you google “Point in time recovery” you also could find “Point in time restore”. So, let decide how to call it. Historically, database has a feature called
<i>Point in time recovery.</i></span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">What is a point-in-time recovery?</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-align:justify;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">So what is a point in time recovery? A point in time recovery is restoring a database to a specified date and time. When you have completed a point in time recovery, your database will
be in the state it was at the specific date and time you identified when restoring your database. A point in time recovery is a method to recover your database to any point in time since the last database backup.</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">What does it take to do a point-in-time recovery?</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-align:justify;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">In order to perform a point in time recovery you will need to have an entire series of backups (complete, differential, and transaction log backups) up to and/or beyond the point in
time in which you want to recover. If you are missing any backups, or have truncated the transaction log without first performing a transaction log backup, then you will not be able to perform a point in time recovery. At a minimum, you will need a complete
backup and all the transaction log backups taken following the complete backup. Optionally if you are taking differential backups, then you will need the complete backup, the last differential backup prior to the corruption, then all the transaction log backups
taken following the differential backup.</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Trove and Point-in-time recovery</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">OpenStack DBaaS Trove is able to perform instance restoration (whole new instance, from scratch) from previously stored backup in remote storage (OpenStack Swift, Amazon AWS S3, etc).
From administration/regular user perspective Trove should be able to perform point in time recovery. Basically it’s almost the same as restoring new instance, but the difference between restore (in terms of Trove) and recovery is huge.
</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Restore</span></i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> gives an ability to spin-up
<b><i>new </i></b>instance from backup (as mentioned earlier), but the <i>Recovery
</i>gives an ability to restore already running instance from backup. For the beginning Trove would be able to recover/restore running instance from full backup.
</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Trove core ReST API and Point-in-Time Recovery/Restore flow</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h4 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">ReST routes</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<div>
<table style="border-collapse:collapse" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="border:1pt solid black;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">HTTP method</span><u></u><u></u></p>
</td>
<td style="border-width:1pt 1pt 1pt medium;border-style:solid solid solid none;border-color:black black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Routes</span><u></u><u></u></p>
</td>
</tr>
<tr>
<td style="border-width:medium 1pt 1pt;border-style:none solid solid;border-color:-moz-use-text-color black black;padding:5.25pt" valign="top">
<p class="MsoNormal" style="margin-bottom:12pt"><u></u> <u></u></p>
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">POST</span></i><u></u><u></u></p>
</td>
<td style="border-width:medium 1pt 1pt medium;border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">{<i>tenant_id</i>}/instances/{<i>instance_id</i>}/recover</span><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">or</span><u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">{<i>tenant_id</i>}/instances/{<i>instance_id</i>}/restore</span><u></u><u></u></p>
</td>
</tr>
</tbody>
</table>
</div>
<h4 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Request body</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas">“recovery”: {</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “instance”: UUID,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “backup”: UUID,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas">}</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<h4 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Response object</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas">“recovery”: {</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “id”: “instance_id”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “name”: “instance_name”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “status”: “BUILDING”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “datastore”: “mysql”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “recovered_from_backup”: “backup_id”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas"> “point_in_time”: “2011-01-22T13:25:27-06:00”,</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<i><span style="font-size:11.5pt;font-family:Consolas">}</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Trove taskmanager RPC API and Point-in-Time Recovery/Restore flow</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h4 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC message</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<div>
<table style="border-collapse:collapse" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="border:1pt solid black;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC method</span><u></u><u></u></p>
</td>
<td style="border-width:1pt 1pt 1pt medium;border-style:solid solid solid none;border-color:black black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Method parameters</span><u></u><u></u></p>
</td>
</tr>
<tr>
<td style="border-width:medium 1pt 1pt;border-style:none solid solid;border-color:-moz-use-text-color black black;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">do_instance_recovery</span></i><u></u><u></u></p>
</td>
<td style="border-width:medium 1pt 1pt medium;border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">instance_id</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">backup_id</span></i><u></u><u></u></p>
</td>
</tr>
</tbody>
</table>
</div>
<h4 style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC message type</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> CAST with poll until instance reach ACTIVE status.</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Trove guestagent RPC API and Point-in-Time Recovery/Restore flow</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h4 style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC message</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<div>
<table style="border-collapse:collapse" border="0" cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td style="border:1pt solid black;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC method</span><u></u><u></u></p>
</td>
<td style="border-width:1pt 1pt 1pt medium;border-style:solid solid solid none;border-color:black black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Method parameters</span><u></u><u></u></p>
</td>
</tr>
<tr>
<td style="border-width:medium 1pt 1pt;border-style:none solid solid;border-color:-moz-use-text-color black black;padding:5.25pt" valign="top">
<p class="MsoNormal" style="margin-bottom:12pt"><u></u> <u></u></p>
<p style="margin:0cm 0cm 0.0001pt;text-align:center" align="center">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">do_recovery</span></i><u></u><u></u></p>
</td>
<td style="border-width:medium 1pt 1pt medium;border-style:none solid solid none;border-color:-moz-use-text-color black black -moz-use-text-color;padding:5.25pt" valign="top">
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> backup_info: {</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> 'id': backup_id,</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> ‘location': location,</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> ’type': backup_type,</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> 'checksum': checksum,</span></i><u></u><u></u></p>
<p style="margin:0cm 0cm 0.0001pt"><i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> }</span></i><u></u><u></u></p>
</td>
</tr>
</tbody>
</table>
</div>
<h4 style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">RPC message type</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt">
<i><span style="font-size:11.5pt;font-family:"Arial","sans-serif""> CAST</span></i><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h4 style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt">
<u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Method implementation</span></u><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h4>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<p style="margin-right:0cm;margin-left:3.75pt;margin-bottom:0.0001pt;text-indent:36pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Re-used restore functionality (restore from full backup).</span><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Proposed implementation for Trove and for Python-troveclient</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div></div><p style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>1.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Trove: [1]<u></u><u></u></span></p>
<p style="margin-right:0cm;margin-left:39.75pt;margin-bottom:0.0001pt;vertical-align:baseline">
<u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif""><span>2.<span style="font:7pt "Times New Roman"">
</span></span></span><u></u><span style="font-size:11.5pt;font-family:"Arial","sans-serif"">Python-troveclient: [2]<u></u><u></u></span></p><div class="">
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-size:13pt;font-family:"Arial","sans-serif"">Useful links</span><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<h3 style="margin-right:0cm;margin-bottom:4pt;margin-left:3.75pt;text-align:justify">
<span style="font-family:"Calibri","sans-serif""> </span><span style="font-size:11.5pt;font-family:"Arial","sans-serif";font-weight:normal">[1]
</span><a href="https://review.openstack.org/#/c/77222/" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204);font-weight:normal">https://review.openstack.org/#/c/77222/</span></a><span style="font-family:"Calibri","sans-serif""><u></u><u></u></span></h3>
<p class="MsoNormal" style="margin-right:0cm;margin-bottom:12pt;margin-left:3.75pt">
<span style="font-size:11.5pt;font-family:"Arial","sans-serif""> [2]
</span><a href="https://review.openstack.org/#/c/77223/" target="_blank"><span style="font-size:11.5pt;font-family:"Arial","sans-serif";color:rgb(17,85,204)">https://review.openstack.org/#/c/77223/</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><br>
<br>
<u></u><u></u></span></p>
</div></div>
<p class="MsoNormal" style="margin-left:3.75pt"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Best Regards,<u></u><u></u></span></p>
</div>
<p class="MsoNormal" style="margin-left:3.75pt"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">Denis Makogon<u></u><u></u></span></p>
</div>
<p class="MsoNormal"><a href="mailto:dmakogon@mirantis.com" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">dmakogon@mirantis.com</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
</div>
<p class="MsoNormal"><a href="http://www.mirantis.com" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">www.mirantis.com</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u><u></u></span></p>
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif""><u></u> <u></u></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div><div class="">
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">_______________________________________________ OpenStack-dev mailing list
</span><a href="mailto:OpenStack-dev@lists.openstack.org" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">OpenStack-dev@lists.openstack.org</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">
</span><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank"><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</span></a><span style="font-size:10.5pt;font-family:"Calibri","sans-serif"">
<u></u><u></u></span></p>
</div></div>
</div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div></div></div></div>