Esta sección ofrece una visión general de las copias de seguridad y la restauración en ClickHouse. Para obtener una descripción más detallada de cada método de copia de seguridad, consulta las páginas de cada método específico en la barra lateral.
Introducción
Aunque la replicación ofrece protección frente a fallos de hardware, no protege contra errores humanos: eliminación accidental de datos, eliminación de la tabla equivocada o de una tabla en el clúster equivocado, y errores de software que den lugar a un procesamiento incorrecto de los datos o a su corrupción. En muchos casos, errores como estos afectarán a todas las réplicas. ClickHouse incorpora mecanismos de protección para evitar algunos tipos de errores; por ejemplo, de forma predeterminada no se pueden eliminar sin más tablas con un motor de la familiaMergeTree que contengan más de
50 Gb de datos. Sin embargo, estas protecciones no cubren todos los casos posibles y
los problemas pueden seguir ocurriendo.
Para mitigar eficazmente los posibles errores humanos, debe preparar cuidadosamente una
estrategia para realizar copias de seguridad y restaurar sus datos con antelación.
Cada empresa dispone de recursos diferentes y tiene requisitos de negocio distintos, por lo que
no existe una solución universal de copias de seguridad y restauración en ClickHouse que se adapte a
todas las situaciones. Lo que funciona para un gigabyte de datos probablemente no funcionará para decenas
de petabytes de datos. Existen varios enfoques posibles, cada uno con sus propias ventajas
y desventajas, que se presentan en esta sección de la documentación. Conviene
usar varios enfoques en lugar de uno solo, para compensar sus distintas
limitaciones.
Tenga en cuenta que, si hizo una copia de seguridad de algo y nunca intentó restaurarla,
lo más probable es que la restauración no funcione correctamente cuando realmente la necesite (o, al
menos, tardará más de lo que la empresa puede tolerar). Por eso, sea cual sea el enfoque de copia de seguridad
que elija, asegúrese de automatizar también el proceso de restauración y practíquelo
regularmente en un clúster de ClickHouse de reserva.
Las copias de seguridad pueden:
- ser síncronas o asíncronas
- ser síncronas o asíncronas
- ser concurrentes o no concurrentes
- estar comprimidas o sin comprimir
- usar colecciones con nombre
- estar protegidas con contraseña
- hacerse de tablas del sistema, tablas de registro o tablas de gestión de acceso
Tipos de copias de seguridad
Las copias de seguridad pueden ser completas o incrementales. Las copias de seguridad completas son una copia íntegra de los datos, mientras que las incrementales contienen únicamente los cambios realizados desde la última copia de seguridad completa. Las copias de seguridad completas tienen la ventaja de ofrecer un método de recuperación simple, independiente (de otras copias de seguridad) y fiable. Sin embargo, pueden tardar mucho en completarse y ocupar mucho espacio. Las copias de seguridad incrementales, en cambio, son más eficientes tanto en tiempo como en espacio, pero para restaurar los datos es necesario que todas las copias de seguridad estén disponibles. Según sus necesidades, puede que le convenga usar:- Copias de seguridad completas para bases de datos más pequeñas o datos críticos.
- Copias de seguridad incrementales para bases de datos más grandes o cuando sea necesario realizar copias de seguridad con frecuencia y de forma rentable.
- Ambas; por ejemplo, copias de seguridad completas semanales y copias de seguridad incrementales diarias.
Copias de seguridad síncronas vs. asíncronas
Los comandosBACKUP y RESTORE también se pueden marcar como ASYNC. En este caso, el
comando de copia de seguridad devuelve el control de inmediato y el proceso de copia de seguridad se ejecuta en segundo plano.
Si los comandos no se marcan como ASYNC, el proceso de copia de seguridad es síncrono y
el comando queda bloqueado hasta que se completa la copia de seguridad.
Copias de seguridad concurrentes y no concurrentes
De forma predeterminada, ClickHouse permite realizar copias de seguridad y restauraciones de forma concurrente. Esto significa que puede iniciar varias operaciones de copia de seguridad o restauración simultáneamente. Sin embargo, hay ajustes a nivel de servidor que permiten desactivar este comportamiento. Si establece estos ajustes en false, solo se permitirá ejecutar una operación de copia de seguridad o restauración en un clúster a la vez. Esto puede ayudar a evitar la contención de recursos o posibles conflictos entre operaciones. Para desactivar las copias de seguridad/restauraciones concurrentes, puede usar estos ajustes, respectivamente:Copias de seguridad comprimidas y sin comprimir
Las copias de seguridad de ClickHouse admiten compresión mediante la configuracióncompression_method y compression_level.
Al crear una copia de seguridad, puedes especificar:
Uso de colecciones con nombre
Las colecciones con nombre le permiten almacenar pares clave-valor (como credenciales de S3, endpoints y opciones de configuración) que pueden reutilizarse en operaciones de copia de seguridad y restauración. Ayudan a:- Ocultar las credenciales a los usuarios sin acceso de administrador
- Simplificar los comandos al almacenar configuraciones complejas de forma centralizada
- Mantener la coherencia entre operaciones
- Evitar la exposición de credenciales en los logs de consultas
Copia de seguridad de tablas del sistema, de registro o de gestión de acceso
Las tablas del sistema también pueden incluirse en los flujos de trabajo de copia de seguridad y restauración, pero su inclusión depende de su caso de uso específico. Las tablas del sistema que almacenan datos históricos, como aquellas con el sufijo_log (p. ej.,
query_log, part_log), pueden incluirse en copias de seguridad y restaurarse como cualquier otra tabla.
Si su caso de uso depende del análisis de datos históricos —por ejemplo, usar query_log
para hacer un seguimiento del rendimiento de las consultas o depurar problemas—, se recomienda incluir estas
tablas en su estrategia de copia de seguridad. Sin embargo, si los datos históricos de estas tablas
no son necesarios, pueden excluirse para ahorrar espacio de almacenamiento.
Las tablas del sistema relacionadas con la gestión de acceso, como users, roles, row_policies,
settings_profiles y quotas, reciben un tratamiento especial durante las operaciones de copia de seguridad y restauración.
Cuando estas tablas se incluyen en una copia de seguridad, su contenido se exporta a un archivo especial
accessXX.txt, que contiene las sentencias SQL equivalentes para crear
y configurar las entidades de acceso. Durante la restauración, el proceso de restauración
interpreta estos archivos y vuelve a aplicar los comandos SQL para recrear los users,
roles y otras configuraciones. Esta funcionalidad garantiza que la configuración de control de acceso
de un clúster de ClickHouse pueda incluirse en una copia de seguridad y restaurarse como parte de
la configuración general del clúster.
Esta funcionalidad solo funciona para configuraciones gestionadas mediante comandos SQL
(conocidas como “Control de acceso y gestión de cuentas controlados por SQL”).
Las configuraciones de acceso definidas en los archivos de configuración del ClickHouse server (p. ej. users.xml)
no se incluyen en las copias de seguridad y no pueden restaurarse mediante este método.
Sintaxis general
Resumen de comandos
A continuación, se detallan cada uno de los comandos anteriores:Copia de seguridad de una tabla sin sus datos
EXCEPT DATA FROM {TABLE|TABLES} incluye la definición de una tabla en la copia de seguridad, pero no sus filas. Resulta útil
para tablas cuyo contenido puede regenerarse después de una restauración, por ejemplo, las tablas de destino de vistas
materializadas.
La cláusula determina lo que escribe BACKUP; no cambia lo que RESTORE puede hacer con el resultado. En
el caso de una tabla que RESTORE puede recrear, una definición sin filas se restaura como una tabla vacía. Sin embargo, no hace
restaurable una tabla que de otro modo no lo sería: que una definición de la copia de seguridad pueda convertirse de nuevo
en una tabla depende del motor, y algunos motores directamente no lo permiten; consulte
Motores que RESTORE no puede recrear.
El alcance de la cláusula se limita al elemento en el que se especifica:
- En un elemento
DATABASEoALL, puede indicar cualquier tabla incluida en la copia de seguridad de ese elemento:
table, dictionary, view, database o all: después de una
coma, un nombre sin comillas se interpreta como el inicio del siguiente elemento.
- En un elemento que hace referencia a un solo objeto (
TABLE,DICTIONARY,VIEW,TEMPORARY TABLE), solo el objeto de ese elemento está dentro del ámbito, por lo que la cláusula debe especificar ese objeto y ningún otro. Defina un elemento y una cláusula propios para cada tabla:
EXCEPT DATA FROM de un elemento más amplio,
sus datos sí se incluyen en la copia de seguridad: al especificar una tabla en un elemento, también se solicitan sus datos. Lo mismo ocurre con EXCEPT TABLES,
donde una tabla mencionada explícitamente se incluye en la copia de seguridad aunque un elemento más amplio la excluya.
Los datos de la tabla interna de una vista materializada (o de las tablas internas de una tabla TimeSeries) se
excluyen mediante el nombre del objeto externo; la cláusula no acepta los nombres de las tablas internas.
EXCEPT DATA FROM {TABLE|TABLES} solo es válida para BACKUP. RESTORE la rechaza en lugar de aceptarla
sin que tenga efecto.
Motores que RESTORE no puede recrear
Algunos motores no se pueden recrear con RESTORE bajo ninguna circunstancia, se use o no EXCEPT DATA FROM {TABLE|TABLES}. En esas tablas, la cláusula sigue determinando el tamaño de la copia de seguridad, pero no permite restaurar una tabla vacía: no se restaura ninguna tabla porque RESTORE se niega a crearla.
El caso más importante es el de una tabla MaterializedPostgreSQL independiente. En cuanto se creara, empezaría a replicar datos desde la fuente PostgreSQL activa y mezclaría la instantánea de la copia de seguridad con el estado actual de la fuente remota. Por eso, RESTORE rechaza su creación en la fábrica de almacenamiento, antes de que se cree la tabla, con NOT_IMPLEMENTED. Esta limitación es propia del motor y también se aplica a una copia de seguridad completa convencional.
El procedimiento admitido consiste en restaurar la tabla con otro nombre en una tabla ReplacingMergeTree creada previamente con la estructura de la tabla anidada (incluidas las columnas _sign y _version):
allow_different_table_def es necesario porque la definición almacenada en la copia de seguridad utiliza el
motor MaterializedPostgreSQL, que se restaura deliberadamente como un ReplacingMergeTree estándar.
Sin EXCEPT DATA FROM TABLE, el mismo RESTORE transfiere también las filas.
Configuración
Configuración general de copia de seguridad y restauración
Configuración específica de S3
Configuración específica de Azure
Administración y resolución de problemas
El comando de copia de seguridad devuelve unid y un status, y ese id puede usarse para
obtener el estado de la copia de seguridad. Esto es muy útil para comprobar el progreso de copias de seguridad
ASYNC prolongadas. El ejemplo siguiente muestra un error que se produjo al intentar
sobrescribir un archivo de copia de seguridad existente:
system.backups, todas las operaciones de copia de seguridad y restauración también quedan registradas en la tabla de registro del sistema
system.backup_log: