2011-06-18 15 views
7

Ho letto che la copia della directory dei dati funzionerà. Ma questa è una combinazione di log e istantanee. Come fanno le persone a fare il backup di un'infrastruttura di un guardiano dello zoo? Esportare ? Discarica? Script personalizzato? Quali sono le migliori pratiche?Come si fa a fare il backup di Zookeeper?

risposta

1

Stiamo modificando lo script zkConfig.py che è un progetto contribuito durante l'installazione di zookeeper. Ti permette di interagire con lo zookeeper attraverso uno script python.

Stiamo modificando gli script per scaricare facilmente e salvare l'intero contenuto ogni notte e quindi eseguire il backup dei file. Anche se sarei curioso di ascoltare anche le soluzioni di altre persone.

+1

fa zkConfig.py ancora esistere? Googling non sembra alzare nulla su di esso. –

12

Zookeeper scrive un'istantanea una volta stabilito che ha abbastanza transazioni e ogni nuova istantanea sostituisce completamente quelle più vecchie. Quindi l'ultima istantanea + il log delle transazioni dal momento dell'istantanea è sufficiente per ripristinare lo stato corrente. Per semplificare i calcoli, è possibile semplicemente eseguire il backup delle ultime 3 istantanee (in caso di danneggiamento dell'ultimo snap) e dei registri delle transazioni dal timestamp corrispondente alla prima istantanea. I link sottostanti hanno alcuni dettagli in più.

  1. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_dataFileManagement
  2. http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
+0

A partire dalla versione' 3.4.0' è possibile utilizzare i '' direttive di configurazione autopurge.snapRetainCount' e autopurge.purgeInterval' per mantenere puliti i tuoi snapshot e registri delle transazioni Ora ti serve solo un cronjob che faccia un backup della directory dei dati ('dataDir'). – czerasz

3

Ho appena avuto la stessa esigenza e ha scoperto che la maggior parte delle opzioni disponibili o non funzionano o richiedono un sacco di personalizzazione.

L'opzione migliore che ho trovato è Guano, che è una piccola app Java che visita ogni nodo dell'albero ricorsivamente a partire dal nodo dichiarato e lo scarica in una struttura di directory corrispondente, così si finisce con una struttura di directory di file semplici è strutturato come l'albero reale.

È anche possibile ripristinare questi backup chiedendogli di eseguire il ripristino in modo ricorsivo da qualsiasi punto in quella struttura. Penso che sia abbastanza bello sia per i backup che per l'esplorazione. Per esempio ho usato immediatamente ack dalla root per trovare tutti i file con una voce a cui tenevo.

Questo è facile da estendere in un backup corretto semplicemente inserendolo come cron job e aggiungendo un passaggio zip per comprimere l'intero backup in un archivio e gestire qualsiasi rotazione necessaria.

Ci sono alcuni aspetti negativi per lo strumento:

  1. Così com'è su Github l'originale non viene compilato a causa mancano pochi importazioni. Diverse persone hanno reso PR o fork che risolvono questo problema come https://github.com/feldoh/guano che è la mia forchetta in cui ho anche migliorato i documenti. Ora ho anche precompilato il jar e spingo i binari in https://bintray.com/feldoh/Guano/guano.
  2. Esegue solo il dump dei dati, il che è utile per l'esplorazione, ma perde metadati come il mTime o la versione dei dati. Effettivamente un ripristino probabilmente dovrebbe essere considerato come un aggiornamento, quindi non posso dire che sia davvero una brutta cosa, ma non è un vero ripristino puntuale.

NB: Ho creato il mio editor Zookeeper in quanto ho riscontrato problemi simili trovando uno di quelli che funzionavano e soddisfacevano le mie esigenze. A seconda di quando leggi questo https://github.com/feldoh/JZookeeperEdit potresti avere anche una funzione di esportazione. I numeri 13/14 coprono questa funzione pianificata.

3

Netflix ha fornito una soluzione per questo chiamato exhibitor. È un co-processo ZooKeeper "per il monitoraggio di istanze, backup/ripristino, pulizia e visualizzazione."

+1

Netflix Exhibitor è un supervisore per Zookeeper e buono per mantenere l'ensemble, MA non gestisce gli snapshot backup - solo registri delle transazioni - in questo modo è possibile ripristinare le transazioni solo una alla volta, non l'intero dato in una volta.Non è una soluzione adatta per l'archiviazione dei dati zk con molti nodi persistenti (non effimeri). Vedere qui: https: // mail-archives.apache.org/mod_mbox/zookeeper-user/201307.mbox/%[email protected]%3E –