- Qué son las instantáneas y dónde encontrarlas
- Cómo se manifiesta el problema
- Las posibles estrategias de recuperación y qué implica cada una
Descripción general de las instantáneas de Keeper
¿Qué es una instantánea?
¿Dónde puedo encontrar las instantáneas?
/var/lib/clickhouse/coordination/snapshots/ o en la ruta personalizada especificada por snapshot_storage_path en su archivo keeper_server.xml. Las instantáneas se nombran de forma incremental (por ejemplo, snapshot.23), y las más recientes tienen números más altos.
En clústeres multinodo, cada nodo de Keeper tiene su propio directorio de instantáneas.
La consistencia de las instantáneas entre los nodos es fundamental para la recuperación.
Síntomas y manifestaciones clave de instantáneas corruptas de Keeper
Indicadores en los logs:
Antes de diagnosticar corrupción en instantáneas, revise los logs de Keeper para detectar patrones de error específicos:
Recuperación ante instantáneas corruptas de Keeper
- Detén todos los nodos de Keeper para evitar que la corrupción se agrave
- Haz una copia de seguridad de todo copiando el directorio completo de coordinación a una ubicación segura
- Verifica el cuórum del clúster para asegurarte de que al menos un nodo tenga datos en buen estado
1. Restaurar desde una copia de seguridad existente
- La corrupción de los metadatos o de una instantánea de Keeper hace que los datos actuales sean irrecuperables.
- Existe una copia de seguridad con un estado de Keeper cuya validez se conoce.
- Localice y valide la copia de seguridad más reciente para comprobar la consistencia de los metadatos.
- Detenga los servicios de ClickHouse y Keeper.
- Sustituya las instantáneas y los logs dañados por los del directorio de la copia de seguridad.
- Reinicie el clúster de Keeper y valide la sincronización de los metadatos.
2. Revertir a una instantánea anterior
- Las instantáneas recientes estén dañadas, pero las anteriores sigan siendo utilizables.
- Los logs incrementales estén intactos para garantizar una recuperación coherente.
- Identifique y seleccione una instantánea anterior válida (por ejemplo, snapshot.19) en el directorio de Keeper.
- Elimine las instantáneas y los logs más recientes.
- Reinicie Keeper para que reprocese los logs y reconstruya el estado de los metadatos.
3. Restaurar metadatos con SYSTEM RESTORE REPLICA
- Los metadatos de Keeper se han perdido o están corruptos, pero los datos de la tabla siguen existiendo en disco
- Las tablas han pasado a modo de solo lectura debido a la ausencia de metadatos de ZooKeeper/Keeper
- Necesitas volver a crear los metadatos en Keeper a partir de las partes de datos disponibles localmente
-
Verifica que los datos de la tabla existan localmente en la ruta de datos de tu clickHouse-server, definida por
<path>en tu configuración. (/var/lib/clickhouse/data/de forma predeterminada) - Para cada tabla afectada, ejecuta:
- Para la recuperación a nivel de la base de datos (si usa el motor de base de datos Replicated):
- Espere a que se complete la sincronización:
- Verifica la recuperación comprobando en
system.replicasqueis_readonly = 0y supervisandosystem.detached_parts
Cómo funciona
SYSTEM RESTORE REPLICA desadjunta todas las partes existentes, recrea los metadatos en Keeper (como si fuera una tabla nueva vacía) y luego vuelve a adjuntar todas las partes. Esto evita tener que volver a descargar los datos por la red.4. Eliminar y volver a crear los metadatos de la réplica en Keeper
- El error se produce en una sola réplica del clúster y esta tiene metadatos dañados o incoherentes en Keeper
- Encuentras errores como “Part XXXXX intersects previous part YYYYY”
- Necesitas restablecer por completo los metadatos de una réplica en Keeper mientras conservas los datos locales
- En la réplica afectada, desvincula la tabla:
- Elimine los metadatos de la réplica en Keeper (ejecute en cualquier réplica):
- Vuelva a adjuntar la tabla (quedará en modo de solo lectura):
- Restaura los metadatos de la réplica:
- Sincronícese con las demás réplicas:
- Verifique
system.detached_partsen todas las réplicas después de la recuperación
- Detenga el servidor ClickHouse
- Cree el indicador de recuperación:
- Inicie el servidor de ClickHouse
- El servidor eliminará automáticamente el indicador y restaurará todas las tablas replicadas
- Supervise los logs para seguir el progreso de la recuperación
5. Reconstruir el Keeper clúster
- No hay instantáneas, logs ni copias de seguridad válidos disponibles para la recuperación.
- Necesita volver a crear todo el Keeper clúster y sus metadatos.
- Detenga por completo los clústeres de ClickHouse y Keeper.
- Restablezca cada nodo de Keeper limpiando los directorios de instantáneas y logs.
- Inicialice un nodo de Keeper como líder y agregue los demás nodos de forma incremental.
- Vuelva a importar los metadatos si están disponibles en registros externos.