Resumen de la actualización de ClickHouse
Este documento contiene:
- directrices generales
- un plan recomendado
- detalles específicos para actualizar los binarios en sus sistemas
Estas notas deberían ayudarle a planificar y a comprender por qué formulamos las recomendaciones que presentamos más adelante en el documento.
Actualice servidor ClickHouse por separado de ClickHouse Keeper o ZooKeeper
A menos que sea necesaria una corrección de seguridad para ClickHouse Keeper o Apache ZooKeeper, no es necesario actualizar Keeper al actualizar servidor ClickHouse. La estabilidad de Keeper es necesaria durante el proceso de actualización, así que complete primero las actualizaciones de servidor ClickHouse antes de considerar una actualización de Keeper.
Las actualizaciones a versiones menores deben aplicarse con frecuencia
Se recomienda encarecidamente actualizar siempre a la versión menor más reciente en cuanto se publique. Las versiones menores no incluyen cambios incompatibles, pero sí correcciones de errores importantes (y pueden incluir correcciones de seguridad).
Pruebe las funciones experimentales en un servidor ClickHouse independiente que ejecute la versión de destino
La compatibilidad de las funciones experimentales puede verse afectada en cualquier momento y de cualquier forma. Si está usando funciones experimentales, revise los changelogs y considere configurar un servidor ClickHouse independiente con la versión de destino instalada para probar allí su uso de estas funciones.
Volver a versiones anteriores
Si actualiza y luego se da cuenta de que la nueva versión no es compatible con alguna funcionalidad de la que depende, es posible que pueda volver a una versión reciente (con menos de un año de antigüedad) si aún no ha empezado a usar ninguna de las nuevas funcionalidades. Una vez que se hayan utilizado las nuevas funcionalidades, no será posible volver a una versión anterior.
Varias versiones de servidor ClickHouse en un clúster
Nos esforzamos por mantener una ventana de compatibilidad de un año (que incluye 2 versiones LTS). Esto significa que dos versiones cualesquiera deberían poder funcionar juntas en un clúster si la diferencia entre ellas es inferior a un año (o si hay menos de dos versiones LTS entre ellas). Sin embargo, se recomienda actualizar todos los miembros de un clúster a la misma versión lo antes posible, ya que pueden surgir algunos problemas menores (como una ralentización de las consultas distribuidas, errores reintentables en algunas operaciones en segundo plano de ReplicatedMergeTree, etc.).
Nunca recomendamos ejecutar versiones diferentes en el mismo clúster cuando las fechas de lanzamiento difieren en más de un año. Aunque no esperamos que se produzca pérdida de datos, el clúster puede quedar inutilizable. Entre los problemas que cabe esperar si hay más de un año de diferencia entre versiones se incluyen:
- es posible que el clúster no funcione
- algunas consultas (o incluso todas) pueden fallar con errores aleatorios
- pueden aparecer errores/advertencias aleatorios en los logs
- puede ser imposible volver a una versión anterior
Actualizaciones incrementales
Si la diferencia entre la versión actual y la versión de destino es de más de un año, se recomienda una de estas opciones:
- Actualizar con tiempo de inactividad (detener todos los servidores, actualizar todos los servidores y volver a poner en marcha todos los servidores).
- O actualizar mediante una versión intermedia (una versión con menos de un año de antigüedad respecto a la versión actual).
Estos son los pasos recomendados para una actualización de ClickHouse sin tiempo de inactividad:
- Asegúrese de que sus cambios de configuración no estén en el archivo predeterminado
/etc/clickhouse-server/config.xml, sino en /etc/clickhouse-server/config.d/, ya que /etc/clickhouse-server/config.xml podría sobrescribirse durante una actualización.
- Revise los registros de cambios para detectar cambios incompatibles (desde la versión de destino hasta la versión que está usando actualmente).
- Realice las actualizaciones identificadas en los cambios incompatibles que puedan hacerse antes de actualizar y haga una lista de los cambios que deberán realizarse después de la actualización.
- Identifique una o más réplicas para cada segmento que se mantendrán activas mientras se actualizan el resto de las réplicas de cada segmento.
- En las réplicas que se actualizarán, una a la vez:
- detenga el servidor de ClickHouse
- actualice el servidor a la versión de destino
- vuelva a iniciar el servidor de ClickHouse
- espere a que los mensajes de Keeper indiquen que el sistema está estable
- continúe con la siguiente réplica6. Busque errores en el registro de Keeper y en el registro de ClickHouse
- Actualice las réplicas identificadas en el paso 4 a la nueva versión
- Consulte la lista de cambios elaborada en los pasos 1 a 3 y realice los cambios que deban hacerse después de la actualización.
Este mensaje de error es esperable cuando hay varias versiones de ClickHouse ejecutándose en un entorno replicado. Dejará de ver este mensaje cuando todas las réplicas se hayan actualizado a la misma versión.MergeFromLogEntryTask: Code: 40. DB::Exception: Checksums of parts don't match:
hash of uncompressed files doesn't match. (CHECKSUM_DOESNT_MATCH) Data after merge is not
byte-identical to data on another replicas.
Proceso de actualización del binario del servidor ClickHouse
Si ClickHouse se instaló a partir de paquetes deb, ejecute los siguientes comandos en el servidor:
$ sudo apt-get update
$ sudo apt-get install clickhouse-client clickhouse-server
$ sudo service clickhouse-server restart
Si instaló ClickHouse por un método distinto de los paquetes deb recomendados, use el método de actualización correspondiente.
Puede actualizar varios servidores a la vez, siempre que no haya ningún momento en el que todas las réplicas de un segmento estén fuera de línea.
Actualización de una versión anterior de ClickHouse a una versión específica:
Por ejemplo:
xx.yy.a.b es una versión estable actual. La versión estable más reciente se puede encontrar aquí
$ sudo apt-get update
$ sudo apt-get install clickhouse-server=xx.yy.a.b clickhouse-client=xx.yy.a.b clickhouse-common-static=xx.yy.a.b
$ sudo service clickhouse-server restart