Nossa empresa possui uma instância RDS de um banco de dados Postgres na AWS. Não tenho muita experiência com AWS.
Gostaria de executar uma consulta muito longa no banco de dados (VACUUM FULL) que pode levar muitas horas ou até dias. Posso me conectar ao banco de dados do meu laptop criando um túnel para a AWS usando uma ferramenta chamada "passaporte".
O problema é que se eu iniciar uma consulta no meu laptop e minha conexão com a Internet cair, ou o laptop reiniciar, ou qualquer outra coisa acontecer na rede entre meu laptop e o computador da Amazon, a consulta será interrompida e perderei qualquer saída do consulta pode gerar.
Nos velhos tempos, quando eu tinha um servidor rodando um sistema operacional com um banco de dados, eu podia me conectar a esse sistema operacional (área de trabalho remota ou ssh ou qualquer outro) e então executar um programa nesse servidor (pgAdmin, psql, etc) que se conectaria ao banco de dados localmente, ao "localhost". Então eu poderia deixá-lo rodando, desconectar do servidor e voltar no dia seguinte, conectar-me novamente e ver os resultados naquela instância do pgAdmin ainda em execução naquele servidor. Nesse caso não havia rede entre a aplicação que estava executando a consulta e o banco de dados.
É possível ter algo assim com o RDS? Como?
Uma maneira de realizar essas tarefas de "conexão de longa duração necessária" na AWS é iniciar uma instância EC2, instalar as ferramentas adequadas, executar o tmux e deixá-lo ir. Desconecte, desligue meu computador. A instância ec2 ainda está em execução e o tmux está executando meu programa. Isso não aconteceu com o RDS, mas o conceito é o mesmo. Contanto que a conexão ec2 com RDS não seja interrompida, o programa é executado. Seu shell na instância ec2 não precisa permanecer conectado se o programa estiver sendo executado corretamente pelo tmux.
Em seguida, pode construir scripts de shell para instalar as ferramentas e outros scripts para iniciar a instância ec2, portanto, iniciar o ambiente é um botão.