Descripción general
- Usar la función
remoteSecure(), con la que los datos se extraen o envían directamente. - Usar los comandos
BACKUP/RESTOREmediante almacenamiento de objetos en la nube
Esta guía de migración se centra en el enfoque dePrerrequisitosBACKUP/RESTOREy ofrece un ejemplo práctico de cómo migrar una base de datos o un servicio completo desde ClickHouse open source a Cloud mediante un bucket de S3.
- Tienes Docker instalado
- Tienes un bucket de S3 y un usuario de IAM
- Puedes crear un nuevo servicio de ClickHouse Cloud
Se requiere un clústerEste método de copia de seguridad requiere un clúster de ClickHouse porque las tablas deben convertirse del motor
MergeTree a ReplicatedMergeTree.
Si ejecutas una sola instancia, sigue en su lugar los pasos de “Migrating between self-managed ClickHouse and ClickHouse Cloud using remoteSecure”.Preparación de OSS
- Clone el repositorio de ejemplos en su máquina local
- En la terminal, vaya a
examples/docker-compose-recipes/recipes/cluster_2S_2Rconcd - Asegúrese de que Docker esté en ejecución y, a continuación, inicie el clúster de ClickHouse:
De una tabla MergeTree a una tabla ReplicatedMergeTree
SharedMergeTree.
Al restaurar una copia de seguridad, ClickHouse convierte automáticamente las tablas con ReplicatedMergeTree en tablas SharedMergeTree.
Es probable que sus tablas ya usen el motor ReplicatedMergeTree si ejecuta un clúster.
Si no es así, tendrá que convertir cualquier tabla MergeTree en ReplicatedMergeTree antes de hacer una copia de seguridad.
Para demostrar cómo convertir tablas MergeTree en ReplicatedMergeTree, comenzaremos con una tabla MergeTree y luego la convertiremos en ReplicatedMergeTree.
Seguiremos los dos primeros pasos de la guía de datos de taxis de Nueva York para crear una tabla de ejemplo y cargar datos en ella.
Esos pasos se incluyen a continuación para facilitar la consulta.
Ejecute los siguientes comandos para crear una nueva base de datos e insertar datos desde un bucket de S3 en una nueva tabla:
DETACH a la tabla.
ReplicatedMergeTree:
Tablas distribuidas con ReplicatedMergeTree
ReplicatedMergeTree local en cada nodo y una tabla Distributed como punto de entrada para las consultas.
Ejecute el siguiente comando para crear la tabla replicada local en todos los nodos del clúster:
Distributed sobre esa base:
Preparación para Cloud
1
Abre Cloud Console
Ve a https://console.clickhouse.cloud/2
Crea un nuevo servicio
3
Configura y crea un servicio
Elige la región y la configuración que prefieras y, a continuación, haz clic enCreate service4
Crea un rol de acceso
Abre SQL ConsoleConfigura el acceso a S3
Para restaurar tu copia de seguridad desde S3, tendrás que configurar un acceso seguro entre ClickHouse Cloud y tu bucket de S3.- Sigue los pasos de “Acceder a datos de S3 de forma segura” para crear un rol de acceso y obtener el ARN del rol.
- Actualiza la política del bucket de S3 que creaste en “Cómo crear un bucket de S3 y un rol de IAM” añadiendo el ARN del rol del paso anterior.
- Usuario de IAM (
docs-s3-user): Permite que tu cluster de ClickHouse autogestionado haga copias de seguridad en S3 - Rol de ClickHouse Cloud (
ClickHouseAccess-001): Permite que tu servicio de Cloud restaure desde S3
Realización de la copia de seguridad (en una implementación autogestionada)
BUCKET_URL, KEY_ID y SECRET_KEY por sus propias credenciales de AWS.
La guía “Cómo crear un bucket de S3 y un rol de IAM”
muestra cómo obtenerlas si todavía no las tiene.
Segmento 1:
Despliegues de un solo nodoSi no utiliza tablas distribuidas, puede hacer una copia de seguridad de toda la base de datos con un solo comando:
- Todas las bases de datos y tablas de usuario
- Cuentas de usuario y contraseñas
- Roles y permisos
- Perfiles de configuración
- Políticas por fila
- Cuotas
- Funciones definidas por el usuario
TO S3() (tanto para AWS como para GCP) y TO AzureBlobStorage().
Para bases de datos muy grandes, considera usar ASYNC para ejecutar la copia de seguridad en segundo plano:
Restaurar en ClickHouse Cloud
ROLE_ARN el
valor obtenido en “Acceder a datos de S3 de forma segura”.
Usa SETTINGS allow_non_empty_tables=true en la segunda restauración (y en cualquier restauración posterior) para
que los datos del segmento se añadan a las tablas ya restauradas en lugar de que la operación falle por un conflicto:
Segmento 1:
implementaciones no distribuidasSi no utiliza tablas distribuidas, restaure la base de datos con un solo comando:
SharedMergeTree internamente, la antigua tabla distribuida ya no es necesaria. Puede eliminarla y sustituirla por una vista que conserve el nombre original de la tabla para sus consultas:
ReplicatedMergeTree no distribuidas se restaurarán como SharedMergeTree: