Skip to main content
Esta seção apresenta uma visão geral de backups e restaurações no ClickHouse. Para uma descrição mais detalhada de cada método de backup, consulte as páginas dos métodos específicos na barra lateral.

Introdução

Embora a replicação ofereça proteção contra falhas de hardware, ela não protege contra erros humanos: exclusão acidental de dados, exclusão da tabela errada ou de uma tabela no cluster errado, e bugs de software que resultam em processamento incorreto de dados ou corrupção de dados. Em muitos casos, erros como esses afetam todas as réplicas. O ClickHouse tem salvaguardas integradas para evitar alguns tipos de erro; por exemplo, por padrão você não pode simplesmente excluir tabelas com um motor da família MergeTree contendo mais de 50 Gb de dados. No entanto, essas salvaguardas não cobrem todos os casos possíveis, e problemas ainda podem ocorrer. Para mitigar com eficácia possíveis erros humanos, você deve preparar cuidadosamente uma estratégia de backup e restauração dos seus dados com antecedência. Cada empresa tem recursos disponíveis e requisitos de negócio diferentes, portanto não há uma solução universal de backups e restaurações do ClickHouse que sirva para todas as situações. O que funciona para um gigabyte de dados provavelmente não funcionará para dezenas de petabytes de dados. Há várias abordagens possíveis, cada uma com seus próprios prós e contras, que são apresentadas nesta seção da documentação. É uma boa ideia usar várias abordagens em vez de apenas uma, para compensar suas diferentes limitações.
Lembre-se de que, se você fez backup de algo e nunca tentou restaurá-lo, há grandes chances de que a restauração não funcione corretamente quando você realmente precisar dela (ou, pelo menos, leve mais tempo do que a empresa pode tolerar). Portanto, qualquer que seja a abordagem de backup escolhida, certifique-se de automatizar também o processo de restauração e pratique-o regularmente em um cluster ClickHouse de contingência.
As páginas a seguir detalham os vários métodos de backup e restauração disponíveis no ClickHouse: Os backups podem:

Tipos de backup

Os backups podem ser completos ou incrementais. Os backups completos são uma cópia completa dos dados, enquanto os backups incrementais contêm apenas as alterações nos dados desde o último backup completo. Os backups completos têm a vantagem de serem um método de recuperação simples, independente (de outros backups) e confiável. No entanto, podem levar muito tempo para serem concluídos e podem consumir muito espaço. Os backups incrementais, por outro lado, são mais eficientes tanto em termos de tempo quanto de espaço, mas a restauração dos dados exige que todos os backups estejam disponíveis. Dependendo das suas necessidades, você pode optar por usar:
  • Backups completos para bancos de dados menores ou dados críticos.
  • Backups incrementais para bancos de dados maiores ou quando os backups precisam ser feitos com frequência e com bom custo-benefício.
  • Ambos, por exemplo, backups completos semanais e backups incrementais diários.

Backups síncronos vs. assíncronos

Os comandos BACKUP e RESTORE também podem ser marcados como ASYNC. Nesse caso, o comando de backup retorna imediatamente, e o processo de backup é executado em segundo plano. Se os comandos não forem marcados como ASYNC, o processo de backup será síncrono, e o comando ficará bloqueado até que o backup seja concluído.

Backups concorrentes vs. não concorrentes

Por padrão, o ClickHouse permite backups e restaurações concorrentes. Isso significa que você pode iniciar várias operações de backup ou restauração simultaneamente. No entanto, há configurações no nível do servidor que permitem desativar esse comportamento. Se você definir essas configurações como false, apenas uma operação de backup ou restauração poderá ser executada em um cluster por vez. Isso pode ajudar a evitar contenção de recursos ou possíveis conflitos entre operações. Para desativar backups/restaurações concorrentes, você pode usar estas configurações, respectivamente:
O valor padrão de ambos é true, então, por padrão, backups/restaurações concorrentes são permitidos. Quando essas configurações são false em um cluster, apenas um único backup/restauração pode ser executado no cluster por vez.

Backups compactados vs. não compactados

Os backups do ClickHouse suportam compactação por meio das configurações compression_method e compression_level. Ao criar um backup, você pode especificar:

Usando coleções nomeadas

Coleções nomeadas permitem armazenar pares chave-valor (como credenciais do S3, endpoints e configurações) que podem ser reutilizados em operações de backup e restauração. Elas ajudam a:
  • Ocultar credenciais de usuários sem acesso de Admin
  • Simplificar comandos armazenando configurações complexas de forma centralizada
  • Manter a consistência entre as operações
  • Evitar a exposição de credenciais nos logs de consultas
Consulte “coleções nomeadas” para mais detalhes.

Backup de tabelas de sistema, de log ou de gerenciamento de acesso

As tabelas de sistema também podem ser incluídas nos seus fluxos de trabalho de backup e restauração, mas isso depende do seu caso de uso específico. Tabelas de sistema que armazenam dados históricos, como aquelas com o sufixo _log (por exemplo, query_log, part_log), podem ser submetidas a backup e restauração como qualquer outra tabela. Se o seu caso de uso depender da análise de dados históricos — por exemplo, usar query_log para acompanhar o desempenho de consultas ou depurar problemas —, é recomendável incluir essas tabelas na sua estratégia de backup. No entanto, se os dados históricos dessas tabelas não forem necessários, elas podem ser excluídas para economizar espaço de armazenamento de backup. Tabelas de sistema relacionadas ao gerenciamento de acesso, como usuários, roles, row_policies, settings_profiles e quotas, recebem tratamento especial durante as operações de backup e restauração. Quando essas tabelas são incluídas em um backup, seu conteúdo é exportado para um arquivo especial accessXX.txt, que contém as instruções SQL equivalentes para criar e configurar as entidades de acesso. Durante a restauração, o processo interpreta esses arquivos e reaplica os comandos SQL para recriar os usuários, roles e outras configurações. Esse recurso garante que a configuração de controle de acesso de um cluster ClickHouse possa ser submetida a backup e restauração como parte da configuração geral do cluster. Essa funcionalidade só funciona para configurações gerenciadas por meio de comandos SQL (chamadas de “Controle de acesso e gerenciamento de contas orientados por SQL”). As configurações de acesso definidas em arquivos de configuração do servidor ClickHouse (por exemplo, users.xml) não são incluídas em backups e não podem ser restauradas por esse método.

Sintaxe geral

Consulte “resumo dos comandos” para obter mais detalhes sobre cada comando.

Resumo dos comandos

Cada um dos comandos acima é detalhado a seguir:

Fazer backup de uma tabela sem seus dados

EXCEPT DATA FROM {TABLE|TABLES} inclui no backup a definição de uma tabela, mas não suas linhas. Isso é útil para tabelas cujo conteúdo pode ser regenerado após uma restauração, como as tabelas de destino de visões materializadas. A cláusula determina o que BACKUP grava, mas não altera o que RESTORE pode fazer com o resultado. Se RESTORE puder recriar a tabela, a definição sem linhas será restaurada como uma tabela vazia. Isso não permite restaurar uma tabela que, de outra forma, não poderia ser restaurada: a possibilidade de recriar uma tabela a partir da definição no backup depende do motor, e alguns motores não permitem essa operação. Consulte Motores que RESTORE não pode recriar. A cláusula se aplica apenas ao elemento em que é especificada:
  • Em um elemento DATABASE ou ALL, ela pode indicar qualquer tabela incluída no backup por esse elemento:
Nessa lista, coloque entre crases o nome de uma tabela ou banco de dados chamado table, dictionary, view, database ou all: após uma vírgula, um nome sem crases é interpretado como o início do próximo elemento.
  • Em um elemento que se refere a um único objeto (TABLE, DICTIONARY, VIEW, TEMPORARY TABLE), somente o objeto desse elemento está no escopo; portanto, a cláusula deve especificar apenas esse objeto. Use um elemento e uma cláusula para cada tabela:
Se uma tabela for especificada tanto em um elemento próprio quanto na cláusula EXCEPT DATA FROM de um elemento mais abrangente, seus dados são incluídos no backup: ao especificar uma tabela, o elemento também solicita seus dados. Isso segue o comportamento de EXCEPT TABLES, em que uma tabela especificada explicitamente é incluída no backup mesmo que um elemento mais abrangente a exclua. Os dados da tabela interna de uma visão materializada (ou das tabelas internas de uma tabela TimeSeries) são excluídos pelo nome do objeto externo; a cláusula não aceita nomes de tabelas internas. EXCEPT DATA FROM {TABLE|TABLES} só é válido para BACKUP. RESTORE rejeita essa cláusula, em vez de aceitá-la como uma operação sem efeito.

Motores que RESTORE não consegue recriar

Alguns motores não podem ser recriados por RESTORE, com ou sem EXCEPT DATA FROM {TABLE|TABLES}. Para essas tabelas, a cláusula ainda controla o tamanho do backup, mas não permite restaurá-las vazias — a tabela não é restaurada, pois RESTORE se recusa a criá-la. O caso a destacar é o de uma tabela MaterializedPostgreSQL independente. Assim que fosse criada, ela começaria a replicar dados da origem PostgreSQL ativa, misturando o snapshot do backup com o estado remoto atual. Por isso, RESTORE a rejeita na fábrica de armazenamento — antes que a tabela seja criada — com NOT_IMPLEMENTED. Essa é uma característica do motor e também se aplica a um backup completo comum. O procedimento aceito é restaurar com outro nome, em uma tabela ReplacingMergeTree criada previamente com a estrutura da tabela aninhada (incluindo as colunas _sign e _version):
allow_different_table_def é necessário porque a definição armazenada no backup usa o motor MaterializedPostgreSQL, mas a restauração é feita intencionalmente em um ReplacingMergeTree comum. Sem EXCEPT DATA FROM TABLE, o mesmo RESTORE também restaura as linhas.

Configurações

Configurações genéricas de backup e restauração Configurações específicas do S3 Configurações específicas do Azure

Administração e solução de problemas

O comando de backup retorna um id e um status, e esse id pode ser usado para consultar o status do backup. Isso é muito útil para verificar o andamento de backups longos ASYNC. O exemplo abaixo mostra uma falha que ocorreu ao tentar sobrescrever um arquivo de backup existente:
Além da tabela system.backups, todas as operações de backup e restauração também são registradas na tabela de log do sistema system.backup_log: