Tag Archives: gcp

GCP – Clonar instâncias entre projetos

Imagine o seguinte cenário:

Você organizou a estrutura da sua conta GCP para trabalhar com projetos distintos;

Fez as TAGs para poder ter os valores corretos por projeto e saber exatamente quanto cada um custa;

Agora precisa copiar uns bancos que estão em um servidor CloudSQL de um projeto para outro projeto, fácil certo? Até descobrir que a GCP não faz de forma fácil.

Mas tem outras formas, da pra gerar um backup do banco, mandar para o bucket, copiar o arquivo de um bucket para outro e depois restaurar, ou usar um servidor intermediário, faz a mesma coisa mas manda o arquivo para esse servidor e restaurado no outro, claro que dá, além de tomar tempo e mesmo que você consiga fazer em paralelo, quantos bancos consegue fazer? o servidor aguenta? o GCP tem limite de IO e operações de Leitura/Gravação no CloudSQL, além de inevitavelmente ser lento.

Eles tem a opção de restaurar um backup da instância em cima de outra instância no mesmo projeto, então deveria ter a opção de fazer a mesma coisa em projetos distintos, no final das contas eles tem, mas tem que ser feito por meio de requisição de API.

No link abaixo montei um python que vai carregar suas credenciais, listar os projetos que você tem direito de acesso, lista as instâncias, backups das instâncias e ai te ajuda a restaurar esse backup em uma outra instância em qualquer outro CloudSQL de qualquer outro projeto.

https://github.com/bigleka/gcp/blob/main/gcp_restore_cloud_database_in_another_project.py

O app é bem simples:

  • Clique em “Carregar Credenciais GCP”;
  • localize o arquivo json gerado pelo comando.
  • gcloud auth application-default login
  • ele vai carregar a lista dos projetos que você tem acesso nas duas listas de “Origem” e “Destino”;
  • Clicando no projeto ele vai listar as instâncias na combobox abaixo da lista dos projetos.
  • Clicando na instância de banco ele vai listar os backups disponíveis, selecione o backup que você quer restaurar na outra instância.
  • Agora faça a mesma coisa no “Destino”, selecione o projeto e a instância.
  • ELE VAI SOBRESCREVER a instância de destino, apagando e restaurando o backup por cima da instância do destino.
  • e clique em “Restaurar”.

Como o processo é assíncrono, caso você queira acompanhar o status da restauração, vá para o console da GCP e acompanhe de lá.

GCP – Copiar flags entre instâncias

Para quem já trabalhou com o GCP CloudSQL sabe a dor de cabeça que é não ter uma forma fácil de gerenciar as flags das instâncias ou uma forma fácil de copiar as flags de uma instância para outra.

Parece que eles gostam muito de dificultar uma administração que deveria ser simples.

Bom, no link abaixo eu montei um outro python que carrega a lista de projetos que você tem acesso, lista as instâncias e as flags, ai você pode escolher quais vão ser aplicadas na outra instância e até editá-las antes de aplicar.

Trabalho em progresso:

Ainda estou tentando listar quais as flags que são obrigatórias de ter reboot, então, por enquanto, assuma que todas vão causar algum tipo de reboot no destino (mesmo que não causem).

https://github.com/bigleka/gcp/blob/main/gcp_copy_cloudsql_flags.py

Eu sou muito fã de linha de comando, mas como as pessoas gostam de interface gráfica, esse python usa o tkinter para montar uma tela zoada para você ser mais feliz.

Basicamente, deixei todas as dependências que precisam ser instaladas na parte comentada do código.

GCP – Executa script em várias instâncias PG

AAAhhh o saudoso SSMS tem uma feature inigualável que é o “Registered Servers“, atende a necessidade de forma incrível.

As outras ferramentas de administração de banco que tem por ai como DBeaver, DataGrip, PGAdmin, etc., tentam ser generalistas e acabam deixando de ter esse tipo de feature.

Como esses, longos e longos dias, estou administrando e migrando vários ambientes Postgres na GCP, montei um script em python que usa o streamlit para fazer mais ou menos o que o “Registered Servers” faz, claro que não com toda a glória do SSMS, mas ainda estou trabalhando nisso.

o código encontra-se no meu repositório do GIT.

https://github.com/bigleka/gcp/blob/main/prototipo_streamlit_cloudsql.py

Ele funciona da seguinte forma:

Usando o arquivo .json, criado através do gcloud, com os dados da sua credencial para usar a API da GCP e listar os projetos e instâncias de bancos de cada projeto que você tem direito de acesso.

Ai tem um botão para carregar as bases de dados de cada instância, não fiz tudo de uma vez porque sobrecarrega o streamlit.

Ai usando uma credencia de banco, não a credencial do IAM (pq depende de um monte de configuração que pode ou não estar ajustada na instância) conseguimos executar em paralelo o mesmo script em várias instâncias nos bancos selecionados.

Problemas conhecidos:

  • Ainda estou trabalhando em ajustar a forma de operação para sessão para conseguir executar scripts que precisam de operação de sessão.
  • Estou vendo o problema dele fechar o grupo do projeto quando seleciono qualquer coisa mesmo tendo selecionado anteriormente alguma coisa, isso não é bem um problema, só é chato.
  • Ajuste já adicionar o status das execuções assim que elas acabarem na barra da esquerda.

Em testes:

  • autenticação web
  • salvar resultados em csv
  • rodar em docker

GCP Cloud SQL – Restauração de instância

Imagine o seguinte cenário:

No universo de bancos de dados em nuvem, a necessidade de restaurar backups pode surgir devido a várias razões: um erro humano, falha em algum sistema ou até mesmo para criar um ambiente de teste. Independentemente do motivo, ter uma ferramenta que simplifique esse processo é essencial.

Apesar do Google Cloud Platform (GCP) oferecer uma solução robusta e escalável com o Cloud SQL, a restauração de backups pode ser um processo que exige múltiplos passos e certa familiaridade com a plataforma. Foi pensando nisso que desenvolvi o GCP Restore Tool.

Por Que Usar o GCP Restore Tool?

A ferramenta foi projetada com o objetivo de tornar o processo de restauração mais amigável e menos propenso a erros. Com uma interface gráfica intuitiva, você pode selecionar projetos, instâncias e o backup desejado para restaurar com apenas alguns cliques.

A maior vantagem? Você não precisa ser um expert em GCP ou lidar com comandos complexos. A ferramenta cuida de tudo para você.

Como Utilizar a Ferramenta

  • Instale a CLI da GCP
  • Abra o terminal e digite:
  • gcloud auth application-default login
  • Você será redirecionado para a tela de autenticação do console da GCP, faça a autenticação.
  • Olhe no terminal e ele terá retornado com algumas informações sobre a localização do arquivo
  • “application_default_credentials.json”
  • Esse arquivo é o que você deve carregar pelo botão “Load GCP Credentials”
  • Na seleção à esquerda, selecione o projeto e a instância de origem nos menus dropdown correspondentes.
  • Clique no botão “Load Backups” e a ferramenta irá listar todos os backups disponíveis para a instância escolhida.
  • Na seção à direita, selecione o projeto e a instância onde deseja restaurar o backup.
  • Após confirmar sua seleção, clique no botão “Restore”. A ferramenta fará todo o trabalho pesado para você, garantindo que o backup selecionado seja restaurado na instância de destino escolhida.

Este processo só funciona sobrescrevendo uma instância pré-existente, logo, você precisa criar uma instância no projeto de destino ou entender que esta atividade vai sobrescrever a instância de destino, tenha certeza de ter selecionado a instância certa.

Se tudo der certo, você vai receber uma mensagem que o processo foi enviado para a GCP, todo o processo ocorre em background pela GCP, então acompanhe pelo portal para saber o status da atividade.

No final, a instância restaurada vai ter o nome, IP, etc da instância que ela sobrescreveu, mas todos os usuários, senhas, bancos, ajustes pontuais, etc. da instância original.

Você pode baixar e acessar o código fonte no GitHub.

ATENÇÃO !!!

A ferramenta está em testes, então faça testes antes de executar a operação em produção.

Execute por sua conta e risco.