Not to fork the thread too far from the topic being discussed, but is
there any possibility of opening up the API used for multidatacenter
replication? Specifically, the fullsync API? I imagine the code inside
riak_repl can also be used for an external node to connect and get a
full dump of a node's content using fullsync. Incremental backups
could potentially be taken by using the AAE strategy, by the backup
sink building a merkle tree of the data it has, and using that to
generate the keylist of deltas.

Unfortunately, riak_repl is not open source, so this is something
Basho would have to build.

On Thu, Jan 23, 2014 at 12:57 PM, Dave Martorana <d...@flyclops.com> wrote:
> I like that HyperDex provides direct backup support instead of simply
> suggesting a stop-filecopy-start-catchup scenario. Are there any plans at
> Basho to make backups a core function of Riak (or as a separate but included
> utility) - it would certainly be nice to have something Basho provides help
> ensure things are done properly each time, all the time.
>
> Cheers,
>
> Dave
>
>
> On Thu, Jan 23, 2014 at 1:42 PM, Joe Caswell <jcasw...@basho.com> wrote:
>>
>> Apologies, clicked send in the middle of an incomplete thought.  It should
>> have read:
>>
>> Backing up the LevelDB data files while the node is stopped would remove
>> the necessity of using the LevelDB repair process upon restoring to make the
>> vnode self-consistent.
>>
>> From: Joe Caswell <jcasw...@basho.com>
>> Date: Thursday, January 23, 2014 1:25 PM
>> To: Sean McKibben <grap...@graphex.com>, Elias Levy
>> <fearsome.lucid...@gmail.com>
>>
>> Cc: "riak-users@lists.basho.com" <riak-users@lists.basho.com>
>> Subject: Re: Riak Search and Yokozuna Backup Strategy
>>
>> Backing up LevelDB data files can be accomplished while the node is
>> running if the sst_x directories are backed up in numerical order.  The
>> undesirable side effects of that could be duplicated data, inconsistent
>> manifest, or incomplete writes, which necessitates running the leveldb
>> repair process upon restoration for any vnode backed up while the node was
>> running.  Since the data is initially written to the recovery log before
>> being appended to level 0, and any compaction operation fully writes the
>> data to its new location before removing it from its old location, if any of
>> these operations are interrupted, the data can be completely recovered by
>> leveldb repair.
>>
>> The only incomplete write that won't be recovered by the LevelDB repair
>> process is the initial write to the recovery log, limiting exposure  to the
>> key being actively written at the time of the snapshot/backup.  As long as 2
>> vnodes in the same preflist are not backed up while simultaneously writing
>> the same key to the recovery log (i.e. rolling backups are good), this key
>> will be recovered by AAE/read repair after restoration.
>>
>> Backing up the LevelDB data files while the node is stopped would remove
>> the necessity of repairing the
>>
>> Backing up Riak Search data, on the other hand, is a dicey proposition.
>> There are 3 bits to riak search data: the document you store, the output of
>> the extractor, and the merge index.
>>
>> When you put a document in <<"key">> in a <<"bucket">> with search
>> enabled, Riak uses the pre-defined extractor to parse the document into
>> terms, possibly flattening the structure, and stores the result in
>> <<"_rsid_bucket">>/<<"key">>, which is used during update operations to
>> remove stale entries before adding new ones, and would most likely be stored
>> in a different vnode, possibly on a different node entirely.  The document
>> id/link is inserted into the merge index entry for each term identified by
>> the extractor, any or all of which may reside on different nodes.  Since the
>> document, its index document, and the term indexes could not be guaranteed
>> to be captured in any single backup operation, it is a very real probability
>> that these would be out of sync in the event that a restore is required.
>>
>> If restore is only required for a single node, consistency could be
>> restored by running a repair operation for each riak_kv vnode and
>> riak_search vnode stored on the node, which would repair the data from other
>> nodes in the cluster.  If more than one node is restored, it is quite likely
>> that they both stored replicas of the same data, for some subset of the full
>> data set.  The only way to ensure consistency is fully restored in the
>> latter case is to reindex the data set.  This can be accomplished by reading
>> and  rewriting all of the data, or by reindexing via MapReduce as suggested
>> in this earlier mailing list post:
>> http://lists.basho.com/pipermail/riak-users_lists.basho.com/2012-October/009861.html
>>
>> In either restore case, having a backup of the merge_index data files is
>> not helpful, so there does not appear to be any point in backing them up.
>>
>> Joe Caswell
>> From: Sean McKibben <grap...@graphex.com>
>> Date: Tuesday, January 21, 2014 1:04 PM
>> To: Elias Levy <fearsome.lucid...@gmail.com>
>> Cc: "riak-users@lists.basho.com" <riak-users@lists.basho.com>
>> Subject: Re: Riak Search and Yokozuna Backup Strategy
>>
>> +1 LevelDB backup information is important to us
>>
>>
>> On Jan 20, 2014, at 4:38 PM, Elias Levy <fearsome.lucid...@gmail.com>
>> wrote:
>>
>> Anyone from Basho care to comment?
>>
>>
>> On Thu, Jan 16, 2014 at 10:19 AM, Elias Levy <fearsome.lucid...@gmail.com>
>> wrote:
>>>
>>>
>>> Also, while LevelDB appears to be largely an append only format, the
>>> documentation currently does not recommend live backups, presumably because
>>> there are some issues that can crop up if restoring a DB that was not
>>> cleanly shutdown.
>>>
>>> I am guessing those issues are the ones documented as edge cases here:
>>> https://github.com/basho/leveldb/wiki/repair-notes
>>>
>>> That said, it looks like as of 1.4 those are largely cleared up, at least
>>> from what I gather from that page, and that one must only ensure that data
>>> is copied in a certain order and that you run the LevelDB repair algorithm
>>> when retiring the files.
>>>
>>> So is the backup documentation on LevelDB still correct?  Will Basho will
>>> enable hot backups on LevelDB backends any time soon?
>>>
>>>
>>>
>>> On Thu, Jan 16, 2014 at 10:05 AM, Elias Levy
>>> <fearsome.lucid...@gmail.com> wrote:
>>>>
>>>> How well does Riak Search play with backups?  Can you backup the Riak
>>>> Search data without bringing the node down?
>>>>
>>>> The Riak documentation backup page is completely silent on Riak Search
>>>> and its merge_index backend.
>>>>
>>>> And looking forward, what is the backup strategy for Yokozuna?  Will it
>>>> make use of Solr's Replication Handler, or something more lower level?  
>>>> Will
>>>> the node need to be offline to backup it up?
>>>>
>>>
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>>
>> _______________________________________________ riak-users mailing list
>> riak-users@lists.basho.comhttp://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>
>
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>

_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to