Fuente Coche deportivo
Debido al voltaje inestable del servidor, después de que el nodo CK en el clúster se reiniciara inesperadamente, CK no pudo iniciarse y siguió informando errores:
En la documentación oficial, en la descripción de la replicación de datos , se menciona el método de recuperación de fallas:
Tenga en cuenta que el directorio flage aquí puede ser el directorio raíz específico de clickhouse especificado durante la instalación. Luego reinicie el servicio CK y CK restaurará los datos desde otra copia de seguridad.
Aquí está el mecanismo de recuperación de fallas propio de CK, siempre que se utilice una tabla replicada (al comienzo de la replicación). La esencia es decirle a CK que reconstruya los datos por la fuerza. Se recomienda este método.
Si los datos se pierden por completo, CK no tiene límite de ancho de banda durante la recuperación. Si hay muchas tablas o una gran cantidad de datos, se debe evaluar la presión y el tiempo de la red.
Todos los archivos del directorio están vacíos (tamaño 0B) por motivos desconocidos. Solo se puede suponer que los datos todavía están en el búfer y no se han escrito en el disco debido a un reinicio anormal en el nivel del servidor. Entonces, con la "ParsingException" anterior, CK no leyó el valor esperado.
La lógica para obtener CK es:
Al comenzar, verifique si los datos establecidos en el sistema de archivos local son consistentes con el conjunto de datos esperado (información en ZooKeeper). Si hay inconsistencias menores, el sistema las resolverá sincronizando los datos con una réplica. Si el sistema detecta fragmentos de datos corruptos (como tamaños de archivos incorrectos) o fragmentos no reconocidos (partes escritas en el sistema de archivos pero no registradas en ZooKeeper), los mueve al subdirectorio 'separado' (equivalente a la eliminación lógica) y luego los restaura. este fragmento de datos de otras copias de seguridad.
Pero tenga en cuenta que aquí hay un mecanismo de seguridad, es decir, CK determina que sus fragmentos dañados son mayores que un cierto valor (max_suspective_broken_parts, correspondiente a la lógica en la Figura 2 del código fuente), es decir , "datos locales" "El conjunto es demasiado diferente de los datos esperados", CK se negará a ayudarlo automáticamente a solucionarlo, generará una excepción y evitará el inicio. En este punto, debes realizar la recuperación manualmente.
Según la configuración de la consulta, el valor predeterminado del parámetro max_suspective_broken_parts es 10:
A través de este manejo de excepciones, CK "un auto deportivo manual con súper desempeño" se ha profundizado "El La impresión es como si el legendario Ferrari activara el modo de muerte ESC-OFF. La vida y la muerte están completamente en manos del usuario. Es digno de ser un sistema de código abierto para luchadores. CK todavía tiene un largo camino por recorrer en el camino hacia la mejora de las instalaciones circundantes.