Olá! Te desejo as boas-vindas ao curso de Administração com PostgreSQL, Backups e Recuperação. Meu nome é Victorino Vila e serei seu instrutor.
Audiodescrição: Victorino é um homem de pele clara, com cabelos curtos e grisalhos, e um cavanhaque escuro rente ao rosto. Está vestindo uma camiseta preta. À sua frente, um microfone apoiado por um braço articulado. Ao fundo, uma parede iluminada por um degrade de tons de azul.
Como administradores de banco de dados, ou aspirantes a essa função, entendemos que garantir a integridade e a segurança dos dados é uma das responsabilidades mais críticas dentro de uma organização. No caso do PostgreSQL, um dos sistemas de gerenciamento de banco de dados mais robustos e populares do mundo, dominar as técnicas de backup e recuperação é essencial.
Neste curso, abordaremos de maneira prática e detalhada como proteger nossos dados utilizando estratégias eficazes de backup, aplicáveis tanto a pequenos bancos de dados quanto a grandes ambientes empresariais. Exploraremos as diversas opções de backup oferecidas pelo PostgreSQL, incluindo backups completos e incrementais. Além disso, aprenderemos a restaurar os dados de forma rápida e eficiente, minimizando o tempo de inatividade e garantindo a continuidade dos negócios.
O curso foi estruturado para proporcionar uma experiência de aprendizado dinâmica, com exemplos práticos e situações reais que podemos aplicar em nosso dia a dia como DBAs. Utilizaremos um cenário fictício da empresa Frutally, onde seremos responsáveis por gerenciar e proteger os dados críticos de vendas da empresa. Dessa forma, aprenderemos não apenas a teoria, mas também como aplicá-las em situações reais.
Ao final deste curso, seremos capazes de implementar diferentes tipos de backups no PostgreSQL, automatizar o processo de backup para que ocorra sem intervenção manual, realizar testes regulares de restauração para garantir a integridade dos backups, desenvolver políticas de retenção e rotação de backups, e recuperar dados de forma eficaz em caso de falha, assegurando a continuidade das operações.
A grande vantagem deste curso é que ele não se limita a um treinamento teórico. Com ele, você estará preparado para enfrentar desafios reais na gestão de bancos de dados PostgreSQL, com um foco especial na proteção dos dados. Ao dominar essas técnicas, aumentará significativamente suas habilidades como DBAs, tornando-se um profissional mais completo e preparado para as demandas do mercado.
Se deseja garantir que os dados sob sua responsabilidade estejam sempre seguros e que possa recuperá-los com total confiança quando necessário, este curso é ideal para você. Vamos em frente!
No curso anterior, abordamos a instalação e configuração inicial do Postgres. Agora, estamos prontos para avançar para a próxima etapa da nossa formação: backups e recuperação de backups. Neste vídeo, veremos como garantir que o ambiente do Postgres esteja corretamente configurado para suportar operações de backup de forma segura e eficiente.
Vamos começar configurando nosso ambiente Postgres para que ele esteja preparado para realizar backups de forma eficiente. Durante este curso, utilizaremos a base de dados Frutally Vendas, criada no curso anterior.
As configurações que apresentaremos neste vídeo serão incluídas no arquivo postgresql.conf
. Primeiramente, é necessário localizar esse arquivo. Se o Postgres foi instalado com as configurações padrão, o arquivo pode ser encontrado em C:\Arquivos de Pogramas\PostgreSQL\<versão>\data
. Vamos abrir esse arquivo com um editor de texto. Embora seja possível usar o Bloco de Notas, recomendamos o Notepad++, que é mais fácil de trabalhar, gratuito e pode ser baixado e instalado na máquina.
max_wal_size
e min_wal_size
Vamos acessar o diretório C:\Arquivos de Pogramas\PostgreSQL\16\data
e abrir o arquivo postgresql.conf
utilizando o Notepad++. Com o arquivo aberto, começaremos ajustando dois parâmetros importantes: max_wal_size
e min_wal_size
.
Esses parâmetros controlam o gerenciamento dos arquivos de logs de transação, conhecidos como arquivos WAL (Write-Ahead Logging). Esses logs são essenciais para manter a integridade dos dados, pois registram todas as transações realizadas no banco antes de serem gravadas na base de dados, permitindo a recuperação em caso de falhas.
O parâmetro max_wal_size
define a quantidade máxima de espaço em disco que os arquivos WAL podem ocupar antes que os dados sejam gravados no banco. Por outro lado, o parâmetro min_wal_size
especifica a quantidade mínima de espaço que esses arquivos WAL ocuparão, ou seja, um espaço sempre reservado para eles. Esses valores devem ser ajustados de acordo com o volume de transações e a capacidade de armazenamento do ambiente em que o Postgres está sendo executado.
Vamos procurar a variável max_wal_size
no arquivo postgresql.conf
e ajustá-la conforme necessário. Se esses parâmetros não estiverem configurados corretamente, é necessário modificá-lo da seguinte forma:
max_wal_size = 1GB
min_wal_size = 80MB
Vamos agora configurar três parâmetros adicionais: archive_mode
, archive_command
e wal_level
.
archive_mode = on
archive_command = 'copy %p C:\\CURSOPOST\\CURSO2\\WAL\\%f'
wal_level = replica
Definir archive_mode
como on
ativará o arquivamento dos arquivos WAL, enquanto archive_command
especificará o comando a ser executado para realizar esse arquivamento. Quando um arquivo WAL estiver completo, seja por atingir um tamanho específico, um tempo limite de acúmulo de dados ou por uma conclusão forçada pelo usuário, ele será automaticamente copiado para um diretório especificado. O %p
representa o nome do arquivo original e %f
é o destino onde o arquivo será salvo.
Com esse parâmetro, toda vez que um arquivo WAL for concluído, o Postgres fará automaticamente uma cópia dele para o diretório configurado. Precisamos criar esse diretório na máquina. No curso anterior, criamos o diretório CURSOPOST
e, dentro dele, criaremos um subdiretório chamado CURSO2
. Em CURSO2
, criaremos uma pasta chamada WAL
. O caminho desta pasta é configurado no parâmetro archive_command
.
O outro parâmetro, wal_level
, é definido como replica
e determina o nível de detalhamento salvo no arquivo WAL. O nível replica
será utilizado para recuperar o backup posteriormente, pois é baseado nesse arquivo WAL que conseguiremos realizar a recuperação do backup.
Vamos verificar a configuração do parâmetro archive_mode
no arquivo postgresql.conf
. Se estiver off
, alteraremos para on
. O próximo parâmetro, archive_command
, está logo abaixo, então basta copiarmos todo o comando 'copy %p C:\\CURSOPOST\\CURSO2\\WAL\\%f'
e atribuir a ele. Já o último parâmetro, wal_level
, será mantido como replica
.
checkpoint_timeout
e archive_timeout
Vamos agora configurar os parâmetros checkpoint_timeout
e archive_timeout
.
checkpoint_timeout = 60
archive_timeout = 60
O parâmetro checkpoint_timeout
está configurado para 60 segundos, o que significa que a cada 60 segundos será realizado um checkpoint. Um checkpoint é o processo pelo qual o Postgres grava todas as alterações pendentes do arquivo WAL para o disco. Durante o checkpoint, o banco de dados salva todas as modificações realizadas desde o último checkpoint, garantindo que os dados sejam persistidos e armazenados de forma segura.
O parâmetro archive_timeout
, também configurado para 60 segundos, força a realização de um checkpoint após 60 segundos, mesmo que o arquivo WAL não esteja cheio. Em ambientes reais, um timeout de 60 segundos é muito curto. Normalmente, em ambientes de produção, utilizam-se timeouts mais longos, dependendo do tipo de atualizações realizadas no banco.
Esses arquivos WAL serão acumulados no diretório especificado e utilizados para recuperar backups. Quanto mais granular for o arquivo WAL, melhor será a recuperação do backup, pois teremos estados do banco mais detalhados salvos no diretório de arquivamento. No entanto, salvar muitos arquivos WAL pode ocupar muito espaço em disco. Portanto, é necessário encontrar um equilíbrio ao especificar esses dois parâmetros. Para configurar esses parâmetros, basta localizá-los e ajustá-lo como 60
.
Após fazer as alterações, salvamos o arquivo postgresql.conf
. Para que as novas configurações sejam aplicadas, é necessário parar e reiniciar o serviço do Postgres.
Neste ponto, todos os dados foram configurados e os parâmetros necessários para realizar backups e recuperações foram devidamente salvos no Postgres. Estamos prontos para avançar. No próximo vídeo, começaremos a realizar nossos primeiros backups.
Até já!
No vídeo anterior, configuramos o ambiente do Postgres para garantir que ele esteja preparado para realizar operações de backup. Agora que o ambiente está devidamente ajustado, é hora de avançar e realizar o nosso primeiro backup completo da base de dados Frutally Vendas.
Primeiramente, vamos trabalhar com a base Frutally Vendas, então é importante verificar se essa base está acessível. Para isso, abriremos o pgAdmin para confirmar se a base Frutally Vendas está correta e acessível, pois será ela que utilizaremos como exemplo para gerar os backups e posteriormente realizar a recuperação.
Com o pgAdmin aberto, navegamos até a pasta server
e localizamos a base FRUTALLY_VENDAS
. Além disso, para realizar os exercícios práticos deste curso, faremos uma alteração na tabela notas_fiscais
da base de dados FRUTALLY_VENDAS
.
createdAt
na tabela notas_fiscais
Executaremos um comando que criará uma nova coluna chamada createdAt
, que registrará automaticamente a data e hora do computador. Essa informação será crucial para criar versionamentos do nosso ambiente, garantindo que, ao gerar os backups e realizar as recuperações, possamos verificar a eficácia da recuperação.
ALTER TABLE notas_fiscais
ADD COLUMN createdAt TIMESTAMP DEFAULT CURRENT TIMESTAMP;
Agora, copiamos o comando e, no pgAdmin, clicamos com o botão direito do mouse sobre a base de dados. Selecionamos a opção "Query Tool", colamos o comando no script aberto e o executamos.
Ao fazer isso, a nova coluna é criada. Se executarmos um SELECT * FROM
na tabela notas_fiscais
e ordenar pelo campo createdAt
de forma decrescente, veremos a nova coluna criada com data e hora.
SELECT * FROM notas_fiscais ORDER BY createdAt DESC
Primeiros 5 registros da nova coluna:
createdat timestamp without time zone 2024-08-08 00:12:01.676693 2024-08-08 00:12:01.676693 2024-08-08 00:12:01.676693 2024-08-08 00:12:01.676693 2024-08-08 00:12:01.676693
Isso não significa que as colunas foram criadas nessa data e hora, pois a tabela já tinha linhas salvas. Quando a coluna foi criada, o Postgres preencheu automaticamente todas as linhas com a data e hora da criação da coluna. À medida que novas notas fiscais forem incluídas, essa data e hora serão atualizadas.
Agora, vamos falar sobre o backup completo da base de dados Frutally Vendas.
pg_dump
Para realizar esse backup, utilizaremos uma ferramenta chamada pg_dump
, usada para criar backups lógicos. Um backup lógico no Postgres é uma cópia completa dos dados e da estrutura do banco de dados feita em um formato que pode ser lido e interpretado como um script SQL. Esse tipo de backup inclui, em um arquivo externo, não o conteúdo dos dados salvos no disco, mas as instruções SQL necessárias para recriar a estrutura do banco, como tabelas, índices e esquemas, e opcionalmente os dados contidos nessa estrutura.
Usaremos um comando de backup que possui alguns parâmetros importantes:
pg_dump -U postgres -d FRUTALLY_VENDAS -F c -f C:\CURSOPOST\CURSO2\Backup\FRUTALLY_VENDAS_full_20240807_0058.bak
O primeiro parâmetro é -U
, que especifica o usuário que executará o backup. Em seguida, temos o parâmetro -d
, que indica o nome da base de dados. Por fim, o parâmetro -F
com o valor c
define o formato do arquivo de backup como personalizado. Esse formato gera um script que, embora não seja legível em um editor de texto comum, é compreendido pelo Postgres.
Já o parâmetro -f
especifica o caminho completo onde o backup será salvo. Neste caso, o backup será salvo no diretório C:\CURSOPOST\CURSO2\Backup\FRUTALLY_VENDAS_full_20240807_0058.bak
.
Backup
Note que o diretório Backup
ainda não foi criado, então vamos criá-lo agora. Dentro do diretório CURSO2
, criaremos um subdiretório chamado Backup
.
De volta aos parâmetros do comando, após passar o subdiretório, definimos o nome do arquivo de backup. Embora o nome possa ser qualquer coisa, é útil seguir uma convenção de nomenclatura. No nosso curso, usaremos a seguinte regra: o nome da base de dados, seguido pelo termo full (completo) e a data e hora do backup.
Para definir a data e hora deste primeiro backup, utilizaremos a data e hora atuais, mas apenas até o nível de hora e minuto. Por exemplo, se a coluna createdAt
foi criada em 8 de agosto de 2024, às 00:12, usaremos essa data e hora no formato AnoMêsDia_HoraMinuto: 20240808_0012
. Vamos substituir no comando:
pg_dump -U postgres -d FRUTALLY_VENDAS -F c -f C:\CURSOPOST\CURSO2\Backup\FRUTALLY_VENDAS_full_20240808_0012.bak
Para executar o comando de backup, utilizaremos a linha de comando. Primeiro, abrimos o prompt de comando como administrador e navegamos até o diretório de instalação do Postgres com os seguintes comandos:
cd "Arquivos de Pogramas"
CD POSTGRESQL
CD 16
CD BIN
Uma vez no diretório bin
, colamos o comando e o executamos:
pg_dump -U postgres -d FRUTALLY_VENDAS -F c -f C:\CURSOPOST\CURSO2\Backup\FRUTALLY_VENDAS_full_20240808_0012.bak
O comando solicitará a senha do usuário Postgres, que foi definida durante a instalação do Postgres no curso anterior. Após inserir a senha, o backup será criado.
Ao navegar até o diretório Backup
, veremos o arquivo FRUTALLY_VENDAS_full_20240807_0058.bak
. Ao abrir este arquivo com um editor de texto, veremos que ele contém comandos SQL, como CREATE TABLE
, mas os dados não serão completamente legíveis. No entanto, o Postgres entenderá esses comandos quando utilizarmos o arquivo .bak
para recuperação.
Note também que no diretório WAL
, os arquivos de log de transações já começaram a ser gravados. Isso ocorre devido ao parâmetro archive_mode
que configuramos no arquivo de configurações do Postgres, definido como on
. À medida que o tempo passa e ações são realizadas no banco de dados, os arquivos de transação são automaticamente salvos no diretório WAL
.
No próximo vídeo, veremos como utilizar o pg_dump
não apenas para gerar um backup completo da base de dados, mas também para fazer backups de partes específicas, como uma ou mais tabelas.
Até já!
O curso Administração com PostgreSQL: backup e recuperação possui 195 minutos de vídeos, em um total de 67 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.