DEV Community

Mayron Ceccon
Mayron Ceccon

Posted on

3 1

Postgresql com Backup Incremental — parte 4— Restore da base de dados

Para esta etapa, devemos ter o Postgresql instalado na máquina onde o restore será feito.

Devemos copiar o arquivo base.tar.gz criado a partir do comando pg_basebackup no servidor principal e os arquivos incrementais que estão sendo salvos na pasta /var/lib/postgresql/pg_log_archive.

O aconselhável é sempre fazer a transferência destes arquivos para outro lugar, se ocorrer um problema físico na máquina principal, não será possível acessar estes arquivos e o backup não terá utilidade. Podemos utilizar scp, rsync, ou qualquer outro programa para a transferência.

Devemos parar o serviço do Postgresql da máquina onde será feito o restore.

/etc/init.d/postgresql stop

Dentro da pasta /var/lib/pgsql temos a pasta data, esta pasta é onde encontramos os dados referentes ao Postgresql, como vamos fazer o restore do banco de outra máquina, devemos renomear a pasta data para tmp (ou qualquer outro nome)

mv /var/lib/pgsql/data /var/lib/pgsql/tmp

Agora vamos descompactar o arquivo de backup feito no servidor principal. Se as versões do Linux forem as mesmas, a pasta será criada diretamente dentro de /var/lib/pgsql, se atentar onde a pasta data será criada.

tar xvfP /var/lib/pgsql/base.tar.gz

Ao listar as pastas, você verá que foi criada novamente a pasta data, onde está é a cópia do servidor principal.

Depois desta etapa devemos remover os logs antigos da pasta pg_xlog do arquivo descompactado, para evitar problemas com dados antigos

rm -rf /var/lib/pgsql/data/pg_xlog/*.*

No servidor master "Principal" temos os logs que ainda não foram salvos no arquivo incremental, estes logs estão dentro da pasta pg_xlog. Se não for possível recuperar estes logs, o restore de dados será feito somente a partir do último arquivo incremental.

Se for possível acessar o servidor principal então devemos copiar os arquivos da pasta pg_xlog, para a pasta pg_xlog do servidor onde será feito o restore.

Agora devemos criar um arquivo chamado recovery.conf dentro da pasta /var/lib/pgsql/data/, neste arquivo colocaremos a linha abaixo:

restore_command = 'cp /var/lib/pgsql/pg_log_archive/%f %p'

Onde o caminho /var/lib/pgsql/pg_log_archive/ são os logs incrementais que buscamos do servidor principal.

Devemos também dar permissão ao postgres executar o arquivo

chown postgres.postgres recovery.conf

Após estes passos devemos iniciar o Postgresql novamente, para a importação dos logs

/etc/init.d/postgresql start

Com isso a rotina de backup e restore incremental esta concluída.

Image of Datadog

The Future of AI, LLMs, and Observability on Google Cloud

Datadog sat down with Google’s Director of AI to discuss the current and future states of AI, ML, and LLMs on Google Cloud. Discover 7 key insights for technical leaders, covering everything from upskilling teams to observability best practices

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more