Si planea cambiar la versión de un clúster de Alibaba Cloud ClickHouse compatible con la edición comunitaria, puede utilizar la función de migración de instancias en la consola de Alibaba Cloud ClickHouse para migrar los datos. Esta función admite tanto la migración completa como la incremental para garantizar la integridad de los datos.
Requisitos previos
-
Los clústeres de origen y de destino deben cumplir los siguientes requisitos:
-
Ambos deben ser clústeres de la edición compatible con la comunidad.
NotaSi necesita migrar de un clúster de la edición compatible con la comunidad a uno de la edición empresarial, o viceversa, consulte Migrate a ClickHouse community-compatible edition cluster to an enterprise edition cluster.
Ambos clústeres se encuentran en estado Running.
Cuenta con una cuenta de base de datos y una contraseña para cada clúster.
Ambos clústeres tienen la misma política de almacenamiento por niveles para datos calientes y fríos.
-
Ambos clústeres utilizan la misma VPC, se encuentran en la misma región y sus direcciones IP están incluidas mutuamente en sus listas blancas. Si no se cumple esta condición, primero debe resolver el problema de conectividad de red. Para obtener más información, consulte How to resolve network connectivity issues between a destination cluster and a data source.
NotaPuede consultar la dirección IP de una instancia de Alibaba Cloud ClickHouse mediante la ejecución del comando
SELECT * FROM system.clusters;. Para obtener información sobre cómo configurar una lista blanca, consulte Configure a whitelist.
-
-
El clúster de destino también debe cumplir los siguientes requisitos:
La versión es posterior o igual a la versión del clúster de origen. Para obtener información sobre la versión más reciente, consulte Community-compatible edition.
-
El espacio disponible en disco (excluyendo el almacenamiento en frío) es como mínimo 1.2 veces el espacio utilizado en disco (excluyendo el almacenamiento en frío) del clúster de origen.
Cada tabla local en el clúster de origen debe tener una tabla distribuida única.
Notas de uso
-
Velocidad de migración: Por lo general, la velocidad de migración para un solo nodo en el clúster de destino supera los 20 MB/s. Si la velocidad de escritura de datos para un solo nodo en el clúster de origen también supera los 20 MB/s, debe evaluar si la velocidad de migración del clúster de destino puede igualar la velocidad de escritura del clúster de origen. De lo contrario, es posible que la migración nunca finalice.
-
Durante la migración, el clúster de destino pausa las operaciones de combinación, pero el clúster de origen no lo hace.
-
El contenido admitido para la migración incluye clústeres, bases de datos, tablas, diccionarios de datos, vistas materializadas, permisos de usuario y configuraciones de clúster.
-
Solo se migran los diccionarios de datos creados mediante sentencias SQL. Los diccionarios de datos creados mediante archivos XML no son compatibles.
Para comprobarlo, ejecute el siguiente comando:
SELECT * FROM system.dictionaries WHERE (database = '') OR isNull(database);. Si se devuelve un resultado, indica que existen diccionarios de datos creados mediante archivos XML. Si un diccionario de datos accede a un servicio externo, asegúrese de que el servicio esté disponible y de que su lista blanca esté configurada para permitir el acceso desde el clúster. Si el origen de datos de un diccionario de datos es una tabla interna de la instancia actual de Alibaba Cloud ClickHouse y el parámetro
HOSTestá establecido en una dirección IP, es posible que el diccionario deje de funcionar después de la migración debido al cambio de dirección IP. En este caso, debe confirmar el nuevo valor deHOSTde la instancia de Alibaba Cloud ClickHouse y volver a crear manualmente el diccionario de datos.
-
Las tablas que utilizan el motor Kafka o RabbitMQ no se migran.
-
Volumen de datos:
Datos fríos: La migración de datos fríos es relativamente lenta. Se recomienda eliminar los datos fríos innecesarios del clúster de origen para asegurar que el tamaño total no exceda 1 TB. De lo contrario, una migración prolongada podría fallar.
Datos calientes: Si el tamaño total de los datos calientes supera los 10 TB, es probable que la tarea de migración falle. No se recomienda utilizar este método de migración en este escenario.
Si sus datos no cumplen estas condiciones, considere realizar una manual migration.
Contenido de la migración:
Para evitar que los datos se dividan entre los clústeres de origen y de destino, elimine las tablas con motores Kafka y RabbitMQ del clúster de origen antes de crearlas en el clúster de destino. Como alternativa, utilice grupos de consumidores diferentes.
If the source cluster contains non-MergeTree tables, these tables in the destination cluster will contain only schemas and no business data after the migration. To migrate the business data for these tables, use the remote function. For more information, see Migrate data by using the remote function.
Impacto en los clústeres
-
Clúster de origen: Durante la migración, puede leer y escribir datos en el clúster de origen. Sin embargo, no se admiten operaciones DDL, como crear, eliminar o modificar metadatos de bases de datos y tablas.
ImportantePara garantizar que la migración se complete, la escritura de datos en el clúster de origen se pausa automáticamente dentro de la ventana de detención de escritura configurada cuando el tiempo restante estimado es de 10 minutos o menos.
La escritura de datos se reanuda automáticamente en el clúster de origen después de que se migren todos los datos dentro de la ventana de detención de escritura, o cuando finaliza dicha ventana, incluso si la migración no se ha completado.
Clúster de destino: Una vez completada la migración, el clúster de destino realiza operaciones de combinación frecuentes durante un periodo determinado. Esto incrementa la utilización de E/S y puede provocar una mayor latencia en las solicitudes de su negocio. Se recomienda planificar el posible impacto de este aumento de latencia. Calcule usted mismo la duración de la combinación. Para obtener más información, consulte Calculate the merge duration after migration.
Procedimiento
Realice las siguientes operaciones en el clúster de destino, no en el clúster de origen.
Paso 1: Registrar y limpiar las tablas con motor Kafka/RabbitMQ
Si el clúster de origen no contiene tablas con motor Kafka/RabbitMQ, omita los pasos 1, 5, 6 y 7, y comience desde el Paso 2.
Antes de iniciar la migración, registre las definiciones de todas las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes en el clúster de origen, gestione las tablas implícitas y luego elimine dichas tablas para evitar errores de migración.
-
Inicie sesión en el clúster de origen y consulte todas las tablas con motor Kafka y RabbitMQ junto con sus dependencias posteriores.
/* create_table_query: table definition dependencies_database: database of the table that depends on this table dependencies_table: table that depends on this table From dependencies_database and dependencies_table, you can identify the materialized views that depend on Kafka/RabbitMQ tables */ SELECT * FROM system.tables WHERE engine IN ('RabbitMQ', 'Kafka'); -
Consulte la definición de la vista materializada para verificar si su tabla de destino es una tabla implícita.
/* View the materialized view definition. If the target table of the materialized view is an implicit table, pay special attention: Dropping the materialized view will also drop the implicit table, causing data loss. Example: If CREATE MATERIALIZED VIEW [db.]table_name [TO[db.]name] does not specify TO, the system automatically creates an implicit table, possibly in the format '.inner_id.<TABLE_UUID>' or '.inner.<TABLE>' */ SELECT * FROM system.tables WHERE database='<DATABASE>' AND name = '<MATERIALIZED_VIEW_NAME>'; -
Si la tabla de destino de una vista materializada es una tabla implícita, cambie el nombre (RENAME) de la tabla de destino a uno nuevo para evitar la pérdida de datos cuando se elimine la vista materializada posteriormente.
-- Rename the implicit target table to a new name to protect data RENAME TABLE <DATABASE>.`.inner_id.<TABLE_UUID>` TO <DATABASE>.<new_target_table_name>; -
Elimine las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes.
-- Drop materialized views first DROP TABLE <DATABASE>.<MATERIALIZED_VIEW_NAME>; -- Then drop Kafka/RabbitMQ engine tables DROP TABLE <DATABASE>.<KAFKA_OR_RABBITMQ_TABLE_NAME>;
Asegúrese de guardar todas las sentencias DDL registradas. Las necesitará para reconstruir estas tablas tanto en el clúster de origen como en el de destino más adelante. Si realizó una operación RENAME, utilice la cláusula TO apuntando a la tabla de destino renombrada al reconstruir la vista materializada. Para obtener más información, consulte CREATE MATERIALIZED VIEW.
Paso 2: Crear una tarea de migración
Inicie sesión en la consola de Alibaba Cloud ClickHouse.
En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y luego haga clic en el ID del clúster de destino.
En el panel de navegación izquierdo, haga clic en .
-
Haga clic en Create Migration Task.
-
Configure las instancias de origen y de destino.
Configure la información requerida y haga clic en Test Connectivity and Proceed.
NotaSi la prueba de conexión es exitosa, continúe con el siguiente paso. Si la prueba falla, vuelva a configurar las instancias de origen y de destino según las indicaciones.
Source Instance: Seleccione el source access method (como Express Connect/VPN Gateway/Smart Access Gateway/ECS-hosted ClickHouse) y luego especifique Instance Region, Cluster Name, Source Cluster Name, VPC IP Address, Database Account y Database Password.
Destination Instance: Especifique Instance Region, Instance ID, Database Account y Database Password.
-
Confirme el contenido de la migración.
Revise el contenido de la migración y luego haga clic en Next: Pre-detect and Start Synchronization.
-
El sistema ejecuta una verificación previa e inicia la tarea.
El sistema realiza la Instance Status Detection, la Storage Space Detection y la Local Table and Distributed Table Detection en las instancias de origen y de destino.
-
Si la verificación previa es exitosa:
Revise el impacto en las instancias durante la migración.
-
Establezca la Time of Stopping Data Writing.
NotaLas escrituras en el clúster de origen deben detenerse durante los últimos 10 minutos de la migración para garantizar la consistencia de los datos.
Para garantizar una alta tasa de éxito, se recomienda establecer la duración de detención de escritura en al menos 30 minutos.
Una tarea de migración debe completarse dentro de los cinco días posteriores a su creación. Por lo tanto, la fecha de finalización para la Time of Stopping Data Writing debe ser a más tardar
current date + 5 days.Para minimizar el impacto en su negocio, se recomienda establecer la ventana de detención de escritura durante las horas de menor actividad.
-
Haga clic en Completed.
NotaDespués de hacer clic en este botón, la tarea se crea e inicia.
-
Si la verificación previa falla, siga las indicaciones para resolver los problemas y reintente la migración de datos. La siguiente tabla describe los elementos de verificación previa y sus requisitos.
Elemento de verificación
Requisito
Instance Status Detection
Asegúrese de que no haya tareas de gestión, como escalado o cambios de configuración, ejecutándose en el clúster de origen o de destino. No puede iniciar la migración si hay una tarea en curso.
Storage Space Detection
El espacio de almacenamiento disponible del clúster de destino debe ser al menos 1.2 veces el espacio de almacenamiento utilizado del clúster de origen.
Local Table and Distributed Table Detection
La verificación falla si una tabla local en el clúster de origen no tiene una tabla distribuida correspondiente o si la tabla distribuida no es única. Debe eliminar cualquier tabla distribuida adicional o crear una tabla distribuida única para cada tabla local.
-
-
Paso 3: Evaluar la finalización de la migración
Si la velocidad de escritura del clúster de origen es menor que 20 MB/s, puede omitir este paso.
Si la velocidad de escritura del clúster de origen es mayor que 20 MB/s, debe verificar la velocidad de escritura real del clúster de destino para evaluar si la migración puede completarse. La velocidad de escritura del clúster de destino debe poder igualar la del clúster de origen. Para ello, siga estos pasos:
Verifique el rendimiento del disco del clúster de destino para determinar su velocidad de escritura real. Para obtener más información, consulte View cluster monitoring information.
-
Compare las velocidades de escritura de los clústeres de destino y de origen.
Si la velocidad de escritura del clúster de destino es mayor que la del clúster de origen, es muy probable que la migración sea exitosa. Continúe con el Paso 4.
Si la velocidad de escritura del clúster de destino es menor que la del clúster de origen, es muy probable que la migración falle. Se recomienda cancel the migration task y realizar una manual migration.
Paso 4: Consultar la tarea de migración
En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y luego haga clic en el ID del clúster de destino.
-
En el panel de navegación izquierdo, haga clic en Data Migration and Synchronization > Migration from ClickHouse.
En la página de lista de migración de instancias, consulte el Migration Status, la Running Information y la Data Write-Stop Window de la tarea.
NotaCuando el tiempo restante estimado en la columna Running Information es de 10 minutos o menos y el Migration Status es Migrating, se activa una detención de escritura en el clúster de origen para garantizar la consistencia de los datos. Las reglas son las siguientes:
Si el momento de activación está dentro de la ventana de detención de escritura configurada, se detienen las escrituras en el clúster de origen.
Si el momento de activación está fuera de la ventana de detención de escritura configurada pero es igual o anterior a la
task start (that is, task creation) date + 5 days, puede modificar la ventana de detención de escritura para continuar la migración.Si el momento de activación está fuera de la ventana de detención de escritura configurada y es posterior a la
task start (that is, task creation) date + 5 days, la migración falla. Debe cancelar la tarea de migración, borrar los datos migrados del clúster de destino y crear una nueva tarea de migración.
ImportanteSi el clúster de origen contiene tablas con motor Kafka/RabbitMQ: cuando la tarea de migración entra en la fase de data migration (es decir, la migración del esquema de tablas ha terminado), realice el Paso 5 para reconstruir las tablas con motor Kafka/RabbitMQ en el clúster de origen, de modo que los datos incrementales reanuden su flujo y se sincronicen con el clúster de destino.
Poco antes de la ventana de detención de escritura configurada, realice el Paso 6 para eliminar las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes en el clúster de origen, a fin de evitar que la acumulación de mensajes durante el periodo de detención de escritura cause inconsistencia en los datos.
Paso 5: Reconstruir las tablas con motor Kafka/RabbitMQ en el clúster de origen
Después de que la tarea de migración entre en la fase de data migration (es decir, la migración del esquema de tablas ha terminado), utilice las sentencias DDL guardadas previamente para reconstruir las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes en el clúster de origen. Una vez reconstruidas, los datos incrementales reanudarán su flujo y se sincronizarán automáticamente con el clúster de destino.
Si anteriormente realizó una operación RENAME en tablas de destino implícitas, utilice la cláusula TO apuntando a la tabla de destino renombrada al reconstruir la vista materializada. Para obtener más información, consulte CREATE MATERIALIZED VIEW.
-- Rebuild Kafka/RabbitMQ engine tables on the source cluster
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Rebuild materialized view (pointing to the renamed target table)
CREATE MATERIALIZED VIEW <database>.<materialized_view_name> TO <database>.<new_target_table_name>
AS SELECT ... FROM <database>.<kafka_or_rabbitmq_table_name>;
Paso 6: Eliminar las tablas con motor Kafka/RabbitMQ en el clúster de origen
Poco antes de la ventana de detención de escritura configurada, elimine las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes en el clúster de origen para detener la escritura de datos incrementales y garantizar la consistencia de la sincronización final de datos.
-- Delete materialized views first
DROP TABLE <database>.<materialized_view_name> ON CLUSTER default;
-- Then delete Kafka/RabbitMQ engine tables
DROP TABLE <database>.<kafka_or_rabbitmq_table_name> ON CLUSTER default;
Paso 7: Reconstruir las tablas con motor Kafka/RabbitMQ en el clúster de destino
Una vez completada la tarea de migración, utilice las sentencias DDL guardadas previamente para reconstruir las tablas con motor Kafka/RabbitMQ y sus vistas materializadas dependientes en el clúster de destino, a fin de restaurar la canalización de consumo de datos incrementales.
Si anteriormente realizó una operación RENAME en tablas de destino implícitas, utilice la cláusula TO apuntando a la tabla de destino renombrada al reconstruir la vista materializada. Para obtener más información, consulte CREATE MATERIALIZED VIEW.
-- Rebuild Kafka/RabbitMQ engine tables on the destination cluster
CREATE TABLE <database>.<kafka_or_rabbitmq_table_name> (...)
ENGINE = Kafka/RabbitMQ
SETTINGS ...;
-- Rebuild materialized view
CREATE MATERIALIZED VIEW <database>.<materialized_view_name> TO <database>.<target_table_name>
AS SELECT ... FROM <database>.<kafka_or_rabbitmq_table_name>;
Paso 8: (Opcional) Cancelar la tarea de migración
En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y luego haga clic en el ID del clúster de destino.
En el panel de navegación izquierdo, haga clic en Data Migration and Synchronization > Migration from ClickHouse.
En la columna Actions de la tarea de migración, haga clic en Cancel Migration.
-
En el cuadro de diálogo Cancel Migration, haga clic en OK.
NotaDespués de cancelar la migración, la lista de tareas no se actualiza inmediatamente. Actualice la página periódicamente para verificar el estado de la tarea.
Una vez cancelada la tarea, su Migration Status cambia a Completed.
Antes de iniciar una nueva migración, debe borrar los datos migrados del clúster de destino para evitar la duplicación de datos.
Paso 9: (Opcional) Modificar la ventana de detención de escritura
En la página Clusters, haga clic en la pestaña Clusters of Community-compatible Edition y luego haga clic en el ID del clúster de destino.
En el panel de navegación izquierdo, haga clic en Data Migration and Synchronization > Migration from ClickHouse.
En la columna Actions de la tarea de migración, haga clic en Modify Data Write-Stop Time Window.
-
En el cuadro de diálogo Modify Data Write-Stop Time Window, seleccione una nueva Time of Stopping Data Writing.
NotaLas reglas para establecer la Time of Stopping Data Writing son las mismas que para crear una tarea de migración.
Haga clic en OK.
Documentación relacionada
Para aprender a migrar datos de un clúster de ClickHouse autogestionado a Alibaba Cloud ClickHouse, consulte Migrate data from a self-managed ClickHouse cluster to an Alibaba Cloud ClickHouse community-compatible edition cluster.