Ajuda > Sem categoria > Atualizando a Versão do PostgreSQL no n8n

Atualizando a Versão do PostgreSQL no n8n

Este passo a passo orienta como trocar a versão do PostgreSQL usada pelo n8n. O processo envolve fazer backup do banco atual, atualizar a imagem no Docker, e restaurar os dados.

  1. Acesse o servidor via SSH
  2. Faça um backup do banco atual
  3. Interrompa os containers
  4. Atualize o docker-compose.yml
  5. Remova o volume antigo
  6. Suba os container novamente
  7. Restaure o backup
  8. Repita a restauração do backup

1 . Acesse o servidor via SSH

Abra o terminal do seu computador e conecte-se ao servidor onde o n8n está instalado:

ssh usuario@seu-servidor

Substitua ‘usuario‘ e ‘seu-servidor‘ pelas credenciais corretas de acesso.

1.1 . Navegue até a pasta do projeto N8N

Após conectar no servidor, vá até o diretório onde está o arquivo docker-compose.yml:

cd /opt/n8n

2. Faça um backup do banco de dados atual

Antes de qualquer alteração, é essencial criar um backup do banco atual.

Execute o seguinte comando dentro da pasta /opt/n8n:

docker exec -t n8n-db pg_dump -U n8n_user -d n8n > backup.sql

Esse comando vai gerar um arquivo chamado ‘backup.sql‘ com todos os dados atuais do banco.

3. Interrompa os containers

Vamos interromper o ambiente para evitar qualquer conflito durante a atualização:

docker compose down

4. Atualize o docker-compose.yml

Abra o arquivo docker-compose.yml para editar:

nano docker-compose.yml

Localize a seção referente ao banco de dados e substitua pela nova imagem desejada. Exemplo com PostgreSQL 15:

postgres:
image: postgres:15
container_name: n8n-db
environment:
– POSTGRES_DB=n8n
– POSTGRES_USER=postgres
– POSTGRES_PASSWORD=your_password
volumes:
– n8n_db_data:/var/lib/postgresql/data

Obs.: Atualize também os valores de POSTGRES_USER e POSTGRES_PASSWORD se necessário.

5. Remova o volume de dados antigo

Como estamos trocando de versão do banco, é necessário remover o volume anterior para evitar conflitos:

docker volume rm n8n_n8n_db_data

6. Suba os containers com a nova versão

Agora, com tudo atualizado, suba os containers novamente:

docker compose up -d

7. Restaure o backup no novo banco

Após o container do banco estar rodando, restaure os dados usando o backup feito anteriormente:

docker exec -i n8n-db psql -U n8n_user -d n8n < backup.sql

Pode ser que o container ainda esteja inicializando e o banco ainda não esteja pronto. Se aparecer um erro, aguarde alguns segundos e repita o comando.

Obs.: Se ao tentar restaurar o backup for exibido um erro de conflito (ex: tabelas já existem), remova todas as tabelas antes de tentar novamente.


Com o comando docker exec -it n8n-db psql -U n8n_user -d n8n você irá acessar o postgreSql.

Após acessar em seu banco postgreSQL você irá utilizar o comando abaixo para apagar todas as tabelas existentes do banco:


DO $$
DECLARE
    r RECORD;
BEGIN
    EXECUTE 'SET session_replication_role = replica';
    FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = 'public') LOOP
        EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(r.tablename) || ' CASCADE';
    END LOOP;
    EXECUTE 'SET session_replication_role = origin';
END
$$;

Após executar o comando  para deletar, verifique se ainda restam tabelas, utilizando o comando \dt. Caso existam, execute os comandos do passo anterior novamente até que todas sejam removidas

Para sair do postgress digite \q e enter.

8. Tente Restaurar o Backup Novamente

Com as tabelas antigas removidas, tente restaurar novamente:

docker exec -i n8n-db psql -U n8n_user -d n8n < backup.sql

Se tudo correu bem, o n8n agora está rodando com a nova versão do PostgreSQL e seus dados foram restaurados com sucesso.