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
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.
| Página | Descrição |
|---|---|
| Backup/restore using local disk or S3 disk | Detalha o backup/restauração para ou a partir de um disco local ou disco S3 |
| Backup/restore using S3 endpoint | Detalha o backup/restauração para ou a partir de um endpoint S3 |
| Backup/restore using AzureBlobStorage | Detalha o backup/restauração para ou a partir do Azure Blob Storage |
| Alternative methods | Discute métodos alternativos de backup |
| Snapshot backup | Snapshots leves para tabelas SharedMergeTree usando armazenamento de objetos em nuvem |
- ser completos ou incrementais
- ser síncronos ou assíncronos
- ser concorrentes ou não concorrentes
- ser compactados ou não compactados
- usar coleções nomeadas
- ser protegidos por senha
- incluir tabelas de sistema, tabelas de log ou tabelas de gerenciamento de acesso
Tipos de backup
- 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
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
Backups compactados vs. não compactados
compression_method e compression_level.
Ao criar um backup, você pode especificar:
Usando coleções nomeadas
- 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
Backup de tabelas de sistema, de log ou de gerenciamento de acesso
_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
Resumo dos comandos
| Comando | Descrição | |
|---|---|---|
BACKUP | Cria um backup dos objetos especificados | |
RESTORE | Restaura objetos de um backup | |
TABLE [db.]table_name [AS [db.]table_name_in_backup] | Faz backup/restauração de uma tabela específica (pode ser renomeada) | |
[PARTITION[S] partition_expr [,...]] | Faz backup/restauração apenas de partições específicas da tabela | |
DICTIONARY [db.]dictionary_name [AS [db.]name_in_backup] | Faz backup/restauração de um objeto de Dicionário | |
DATABASE database_name [AS database_name_in_backup] | Faz backup/restauração de um banco de dados inteiro (pode ser renomeado) | |
TEMPORARY TABLE table_name [AS table_name_in_backup] | Faz backup/restauração de uma tabela temporária (pode ser renomeada) | |
VIEW view_name [AS view_name_in_backup] | Faz backup/restauração de uma view (pode ser renomeada) | |
[EXCEPT TABLES ...] | Exclui tabelas específicas ao fazer backup de um banco de dados | |
ALL | Faz backup/restauração de tudo (todos os bancos de dados, tabelas etc.). Antes da versão 23.4 do ClickHouse, ALL se aplicava apenas ao comando RESTORE. | |
[EXCEPT {TABLES|DATABASES}...] | Exclui tabelas ou bancos de dados específicos ao usar ALL | |
[ON CLUSTER 'cluster_name'] | Executa o backup/restauração em todo o cluster do ClickHouse | |
TO|FROM | Direção: TO para o destino do backup, FROM para a origem da restauração | |
File('<path>/<filename>') | Armazena no/restaura do sistema de arquivos local | |
Disk('<disk_name>', '<path>/') | Armazena em/restaura de um disco configurado | |
S3('<S3 endpoint>/<path>', '<Access key ID>', '<Secret access key>') | Armazena no/restaura do Amazon S3 ou de armazenamento compatível com S3 | |
[SETTINGS ...] | Veja abaixo a lista completa de configurações | |
[ASYNC] | Faz com que a operação seja executada de forma assíncrona (retorna imediatamente com um ID que você pode monitorar) |
Configurações
| Configuração | Descrição | Valor padrão |
|---|---|---|
id | ID da operação de backup ou de restauração; se não for especificado, será usado um UUID gerado aleatoriamente. Se já houver uma operação em execução com o mesmo ID, uma exceção será lançada. | |
compression_method | Especifica o método de compressão para o backup. Consulte a seção “codecs de compressão de coluna” | |
compression_level | Especifica o nível de compressão do backup | |
password | Senha do arquivo de backup. Suportado apenas para arquivos ZIP (.zip, .zipx). | |
base_backup | O destino do backup base usado em backups incrementais. Por exemplo: Disk('backups', '1.zip') | |
use_same_password_for_base_backup | Indica se o arquivo do backup base deve herdar a senha da consulta. | |
structure_only | Se habilitado, faz backup ou restaura apenas as instruções CREATE, sem os dados da tabela. | |
storage_policy | Política de armazenamento para as tabelas que estão sendo restauradas. Consulte “uso de vários dispositivos de bloco para armazenar dados. Aplicável apenas ao comando RESTORE. Aplica-se somente a tabelas com um engine da família MergeTree. | |
allow_non_empty_tables | Permite que RESTORE TABLE insira dados em tabelas não vazias. Isso combinará os dados já existentes na tabela com os dados extraídos do backup. Portanto, essa configuração pode causar duplicação de dados na tabela; use com cautela. | 0 |
backup_restore_keeper_max_retries | Número máximo de tentativas para operações do [Zoo]Keeper no decorrer de uma operação de BACKUP ou RESTORE. Deve ser alto o suficiente para que toda a operação não falhe por causa de uma falha temporária do [Zoo]Keeper. | 1000 |
backup_restore_keeper_retry_initial_backoff_ms | Timeout de backoff inicial para operações do [Zoo]Keeper durante backup ou restore | 100 |
backup_restore_keeper_retry_max_backoff_ms | Timeout máximo de backoff para operações do [Zoo]Keeper durante backup ou restore | 5000 |
backup_restore_failure_after_host_disconnected_for_seconds | Se um host, durante uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER, não recriar seu nó efêmero ‘alive’ no ZooKeeper dentro desse período, todo o backup ou restore será considerado como falho. Esse valor deve ser maior do que qualquer tempo razoável para um host se reconectar ao ZooKeeper após uma falha. Zero significa ilimitado. | 3600 |
backup_restore_keeper_max_retries_while_initializing | Máximo de novas tentativas para operações do [Zoo]Keeper durante a inicialização de uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER. | 20 |
backup_restore_keeper_max_retries_while_handling_error | Número máximo de tentativas para operações do [Zoo]Keeper ao tratar um erro em uma operação BACKUP ON CLUSTER ou RESTORE ON CLUSTER. | 20 |
backup_restore_finish_timeout_after_error_sec | Por quanto tempo o initiator deve esperar que os outros hosts reajam ao nó ‘error’ e interrompam seu trabalho na operação atual de BACKUP ON CLUSTER ou RESTORE ON CLUSTER. | 180 |
backup_restore_keeper_value_max_size | Tamanho máximo dos dados de um nó do [Zoo]Keeper durante o backup | 1048576 |
backup_restore_batch_size_for_keeper_multi | Tamanho máximo do lote para solicitação múltipla ao [Zoo]Keeper durante backup ou restauração | 1000 |
backup_restore_batch_size_for_keeper_multiread | Tamanho máximo do lote para solicitação de multileitura ao [Zoo]Keeper durante backup ou restauração | 10000 |
backup_restore_keeper_fault_injection_probability | Probabilidade aproximada de falha de uma solicitação ao Keeper durante o backup ou a restauração. O valor válido está no intervalo [0.0f, 1.0f] | 0 |
backup_restore_keeper_fault_injection_seed | 0 para uma semente aleatória; caso contrário, o valor da configuração | 0 |
backup_restore_s3_retry_attempts | Configuração de Aws::Client::RetryStrategy; o Aws::Client faz as novas tentativas por conta própria, e 0 significa nenhuma nova tentativa. Isso se aplica apenas a backup/restauração. | 1000 |
max_backup_bandwidth | Velocidade máxima de leitura, em bytes por segundo, para um backup específico no servidor. Zero significa ilimitada. | 0 |
max_backups_io_thread_pool_size | O ClickHouse usa threads do pool de threads de E/S de backups para realizar operações de E/S de backup no S3. max_backups_io_thread_pool_size limita o número máximo de threads no pool. | 1000 |
max_backups_io_thread_pool_free_size | Se o número de threads ociosas no Backups IO Thread pool exceder max_backup_io_thread_pool_free_size, ClickHouse liberará os recursos ocupados pelas threads ociosas e reduzirá o tamanho do pool. As threads poderão ser criadas novamente, se necessário. | 0 |
backups_io_thread_pool_queue_size | O número máximo de jobs que podem ser agendados no Backups IO Thread pool. Recomenda-se manter esta fila sem limite devido à lógica atual de backups no S3. Observação: um valor de 0 (padrão) significa sem limite. | 0 |
backup_threads | O número máximo de threads para executar comandos BACKUP. | |
max_backup_bandwidth_for_server | A velocidade máxima de leitura, em bytes por segundo, para todos os backups no servidor. Zero significa ilimitado. | 0 |
shutdown_wait_backups_and_restores | Se definido como true, o ClickHouse aguardará a conclusão dos backups e restaurações em execução antes de ser desligado. | 1 |
| Configuração | Descrição | Valor padrão |
|---|---|---|
use_same_s3_credentials_for_base_backup | Se o backup base no S3 deve herdar as credenciais da consulta. Funciona apenas com S3. | |
s3_storage_class | A classe de armazenamento usada para backup no S3. Por exemplo: STANDARD |
| Configuração | Descrição | Valor padrão | ||
|---|---|---|---|---|
azure_attempt_to_create_container | Ao usar o Azure Blob Storage, indica se deve haver uma tentativa de criar o contêiner especificado caso ele não exista. | true |
Administração e solução de problemas
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:
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: