<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:03:44 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-3679] Point in Time Recovery</title>
                <link>https://jira.mongodb.org/browse/SERVER-3679</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;We would like point in time recovery for MongoDB.  For instance, each time you recycle a journal, spool it to file first according to a parameter for it&apos;s destination.  Allow for recovery to read from this destination if it exists, and the files are there.  A scheme needs to be created to allow for recovery to be brought up to some point and stopped.  There are analogs in MySQL, PostgreSQL, Oracle, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.mysql.com/doc/refman/5.1/en/point-in-time-recovery.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://dev.mysql.com/doc/refman/5.1/en/point-in-time-recovery.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The enterprise use case is, say, a horrible piece of code was pushed to the live site. It deleted data or something, and all the slaves consumed the change.  The lagged standby is 8 hours old, the problem is only 1 hour old.  It would be a shame to have to logically rollback 7 hours of otherwise OK operations.  &lt;/p&gt;

&lt;p&gt;One could potentially manually do this operation today by opening the slave, essentially deleting oplog entries (recreate the oplog with the stuff you want), and then removing slaveDelay, but it&apos;s hacky/risky/tricky and could confuse the heck out of the replica set I suspect.  Point in time recovery could potentially be based on slaveDelay if one allows for recovering up to a point, then become master.  I could envision a series of replica set commands that allow for this.  So thats a potentially different approach to get point in time recovery functionality.&lt;/p&gt;</description>
                <environment></environment>
        <key id="21369">SERVER-3679</key>
            <summary>Point in Time Recovery</summary>
                <type id="2" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14711&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="kgorman">Kenny Gorman</reporter>
                        <labels>
                    </labels>
                <created>Tue, 23 Aug 2011 18:03:12 +0000</created>
                <updated>Wed, 29 Feb 2012 03:53:49 +0000</updated>
                            <resolved>Sat, 3 Sep 2011 05:06:55 +0000</resolved>
                                                                                        <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="52337" author="eliot" created="Sat, 3 Sep 2011 05:06:55 +0000"  >&lt;p&gt;You can do this all today as Scott said.&lt;br/&gt;
There is room for a nice tool at some point...&lt;/p&gt;</comment>
                            <comment id="50186" author="kgorman" created="Tue, 23 Aug 2011 18:28:41 +0000"  >&lt;p&gt;The no-op approach is perfect.&lt;/p&gt;

&lt;p&gt;In terms of mongodump, well, I suspect most folks backup at the file level vs mongodump/restore.  So an analog would need to be there to allow for this to happen.  Also, how would one keep oplog entries that would be over-written?  Thus my point about spooling those files out to a destination.&lt;/p&gt;</comment>
                            <comment id="50185" author="scotthernandez" created="Tue, 23 Aug 2011 18:21:59 +0000"  >&lt;p&gt;You can turn any operation into a no-op (by just updating it); this will not remove it but you can alter docs which don&apos;t increase in size.&lt;/p&gt;

&lt;p&gt;New versions of mongodump/restore may allow you to specify an oplog ts to replay to. &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-3265&quot; class=&quot;external-link&quot; rel=&quot;nofollow&quot;&gt;https://jira.mongodb.org/browse/SERVER-3265&lt;/a&gt; &lt;/p&gt;</comment>
                            <comment id="50180" author="kgorman" created="Tue, 23 Aug 2011 18:16:43 +0000"  >&lt;p&gt;I suppose another approach would be to sneak the delayed slave up on the point of the failure but not over.  Hard to do manually.  &lt;/p&gt;

&lt;p&gt;Perhaps an option to the replica set with a maximum TS to recovery to would work as well.  &lt;/p&gt;
{maxRecovery:&amp;lt;ts&amp;gt;}
&lt;p&gt; could be sent to rs.reconfig() and the oplog beyond that point in time would always be ignored.&lt;/p&gt;

&lt;p&gt;Of course, if someone deleted an imporant collection the very best option would be to be able to issue a db.oplog.rs.remove(&lt;/p&gt;
{&amp;lt;the bad operation&amp;gt;}
&lt;p&gt;).  This can get tricky if subsequent operations touch that object and capped collections don&apos;t allow deletes.  Perhaps add a cappedCollection to normalCollection conversion that could be run before this so at least there are manual ways to &apos;fix&apos; your oplog stream.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 23 Aug 2011 18:21:59 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        12 years, 24 weeks, 4 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ian@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            12 years, 24 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Old_Backport</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[No]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>eliot</customfieldvalue>
            <customfieldvalue>kgorman</customfieldvalue>
            <customfieldvalue>scotthernandez</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrossn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hristr:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>23323</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|ht0d4n:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>