2011-06-18 15 views
7

He leído que funcionará copiar el directorio de datos. Pero, eso es una combinación de registros e instantáneas. ¿Cómo hacen las personas una copia de seguridad de una infraestructura de zookeeper? Exportar? ¿Volcado? Script personalizado? ¿Cuáles son las mejores prácticas?¿Cómo hacer una copia de seguridad de Zookeeper?

Respuesta

1

Estamos modificando la secuencia de comandos zkConfig.py que es un proyecto contribuido al instalar zookeeper. Te permite interactuar con zookeeper a través de un script de python.

Estamos modificando las secuencias de comandos para volcar y guardar fácilmente todo el contenido cada noche y luego hacer una copia de seguridad de los archivos. Aunque también me gustaría escuchar las soluciones de otras personas a esto.

+1

¿El zkConfig.py todavía existen? Googlear no parece que subir nada en ella. –

12

Zookeeper escribe una instantánea una vez que determina que tiene suficientes transacciones y cada nueva instantánea reemplaza por completo a las anteriores. De modo que la última instantánea + el registro de transacciones desde el momento de la instantánea es suficiente para recuperar el estado actual. Para facilitar los cálculos, simplemente puede hacer una copia de seguridad de las últimas 3 instantáneas (en caso de corrupción de la última instantánea) y los registros de transacciones de la marca de tiempo correspondiente a la instantánea más antigua. Los enlaces a continuación tienen más detalles.

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

partir de la versión' 3.4.0' puede utilizar las directivas de configuración '' autopurge.snapRetainCount' y autopurge.purgeInterval' para mantener limpias tus instantáneas y registros de transacciones. Ahora solo necesitas un cronjob que hace una copia de seguridad del directorio de datos ('dataDir'). – czerasz

3

Acabo de tener el mismo requisito y se encontró que la mayoría de las opciones disponibles, o bien no funcionan o requieren una gran cantidad de personalización.

La mejor opción que encontré fue Guano, que es una pequeña aplicación Java que visita recíprocamente cada nodo en el árbol desde el nodo declarado y lo coloca en una estructura de directorio coincidente, por lo que termina con una estructura de directorios de archivos simples que está estructurado como el árbol real.

También puede restaurar estas copias de seguridad pidiéndole que restaure recursivamente desde cualquier punto de ese árbol. Creo que esto es bastante bueno tanto para copias de seguridad como para exploración. Por ejemplo, inmediatamente utilicé ack desde la raíz para encontrar todos los archivos con una entrada que me importaba.

Esto es fácil de extender a una copia de seguridad adecuada simplemente poniéndolo como un trabajo cron y agregando un paso zip para comprimir toda la copia de seguridad en un archivo así como manejar cualquier rotación necesaria.

Hay algunas desventajas a la herramienta:

  1. Tal como está en Github el original no se compila debido a que falta un par de importaciones. Varias personas han fabricado RP o tenedores que solucionan este problema, como https://github.com/feldoh/guano, que es mi tenedor en el que también he mejorado los documentos. También precompuse el archivo jar y presionaré binarios en https://bintray.com/feldoh/Guano/guano.
  2. Solo descarga los datos, lo que es bueno para la exploración pero pierde metadatos como el mTime o la versión de datos. Es cierto que una restauración probablemente debería contar como una actualización, así que no puedo decir que realmente sea algo malo, pero no es una verdadera restauración puntual.

NB: He hecho mi propio editor de Zookeeper ya que tuve problemas similares para encontrar uno de los que funcionó y satisfizo mis necesidades. Dependiendo de cuándo lea esto, https://github.com/feldoh/JZookeeperEdit también puede tener una función de exportación. Los problemas 13/14 cubren esta característica planificada.

3

Netflix proporcionó una solución para esto llamada exhibitor. Es un "coproceso de ZooKeeper para monitoreo, copia de seguridad/recuperación, limpieza y visualización de instancias."

+1

Netflix Exhibitor es un supervisor de Zookeeper y es bueno para mantener el conjunto. PERO no maneja instantáneas copia de seguridad, solo registros de transacciones, para que solo pueda restaurar las transacciones una por una, no toda la información a la vez. No es una solución adecuada para el almacenamiento de datos zk con muchos nodos persistentes (no efímeros). Consulte aquí: https: // mail-archives.apache.org/mod_mbox/zookeeper-user/201307.mbox/%[email protected]%3E –

Cuestiones relacionadas