Visão geral
- Usar a função
remoteSecure(), em que os dados são extraídos/enviados diretamente. - Usar os comandos
BACKUP/RESTOREpor meio de armazenamento de objetos na nuvem
Este guia de migração se concentra na abordagemPré-requisitosBACKUP/RESTOREe oferece um exemplo prático de migração de um banco de dados ou de um serviço completo do ClickHouse open source para o ClickHouse Cloud por meio de um bucket do S3.
- Você tem o Docker instalado
- Você tem um bucket do S3 e usuário do IAM
- Você consegue criar um novo serviço do ClickHouse Cloud
Cluster obrigatórioEste método de backup exige um cluster do ClickHouse porque as tabelas devem ser convertidas do engine
MergeTree para ReplicatedMergeTree.
Se você estiver executando uma instância única, siga as etapas em “Migrando entre ClickHouse autogerenciado e ClickHouse Cloud usando remoteSecure”.Preparação do OSS
- Clone o repositório de exemplos para sua máquina local
- No terminal, acesse
examples/docker-compose-recipes/recipes/cluster_2S_2Rcomcd - Certifique-se de que o Docker esteja em execução e, em seguida, inicie o cluster ClickHouse:
De tabela MergeTree para tabela ReplicatedMergeTree
SharedMergeTree.
Ao restaurar um backup, o ClickHouse converte automaticamente tabelas com ReplicatedMergeTree em tabelas SharedMergeTree.
Se você estiver executando um cluster, é provável que suas tabelas já estejam usando o engine ReplicatedMergeTree.
Caso contrário, será necessário converter todas as tabelas MergeTree para ReplicatedMergeTree antes de fazer o backup.
Para demonstrar como converter tabelas MergeTree em ReplicatedMergeTree, vamos começar com uma tabela MergeTree e depois convertê-la para ReplicatedMergeTree.
Vamos seguir as duas primeiras etapas do guia de dados de táxi de Nova York para criar uma tabela de exemplo e carregar dados nela.
Essas etapas estão incluídas abaixo para facilitar.
Execute os comandos a seguir para criar um novo banco de dados e inserir dados de um bucket do S3 em uma nova tabela:
DETACH na tabela.
ReplicatedMergeTree:
Tabelas distribuídas com ReplicatedMergeTree
ReplicatedMergeTree local em cada nó e de uma tabela Distributed como ponto de entrada para consultas.
Execute o comando a seguir para criar a tabela replicada local em todos os nós do cluster:
Distributed sobre essa tabela:
Preparação no Cloud
1
Abra o Cloud Console
2
Crie um novo serviço
3
Configure e crie um serviço
Escolha a região e a configuração desejadas e clique em
Create service4
Crie uma role de acesso
Abra o SQL ConsoleA política inclui ambos os ARNs:
Configure o acesso ao S3
Para restaurar seu backup do S3, você precisará configurar acesso seguro entre o ClickHouse Cloud e seu bucket do S3.- Siga as etapas em “Acessar dados no S3 com segurança” para criar uma role de acesso e obter o ARN da role.
- Atualize a política do bucket do S3 que você criou em “Como criar um bucket do S3 e uma IAM role”, adicionando o ARN da role da etapa anterior.
- Usuário do IAM (
docs-s3-user): Permite que seu cluster ClickHouse autogerenciado faça backup no S3 - Role do ClickHouse Cloud (
ClickHouseAccess-001): Permite que seu serviço Cloud restaure a partir do S3
Fazendo o backup (na implantação autogerenciada)
BUCKET_URL, KEY_ID e SECRET_KEY pelas suas próprias credenciais da AWS.
O guia “Como criar um bucket do S3 e uma IAM role”
mostra como obtê-las caso você ainda não as tenha.
Shard 1:
Implantações de nó únicoSe você não estiver usando tabelas distribuídas, poderá fazer backup do banco de dados inteiro com um único comando:
- Todos os bancos de dados e tabelas de usuários
- Contas de usuário e senhas
- Roles e permissões
- Perfis de configuração
- Políticas por linha
- Cotas
- Funções Definidas pelo Usuário
TO S3() (tanto para AWS quanto para GCP) e TO AzureBlobStorage().
Para bancos de dados muito grandes, considere usar ASYNC para executar o backup em segundo plano:
Restaurar no ClickHouse Cloud
ROLE_ARN como o
valor obtido em “Acessar dados no S3 com segurança”.
Use SETTINGS allow_non_empty_tables=true na segunda restauração (e em cada restauração subsequente) para
que os dados do shard sejam adicionados às tabelas já restauradas, em vez de a operação falhar por conflito:
Shard 1:
implantações não distribuídasSe você não estiver usando tabelas distribuídas, restaure o banco de dados com um único comando:
SharedMergeTree internamente, a antiga tabela distribuída não é mais necessária. Você pode removê-la e substituí-la por uma view que preserva o nome original da tabela nas suas consultas:
ReplicatedMergeTree não distribuídas serão restauradas como SharedMergeTree: