Backup e Restauração do PostgreSQL

PostgreSQLBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá as técnicas essenciais para fazer backup e restaurar bancos de dados PostgreSQL. Gerenciar backups adequadamente é uma habilidade crítica para qualquer administrador de banco de dados para prevenir a perda de dados.

Você começará criando um banco de dados de exemplo e o preenchendo com dados. Em seguida, usará a utilidade pg_dump para criar um backup completo do banco de dados. Depois disso, aprenderá como restaurar o banco de dados a partir do arquivo de backup usando a ferramenta de linha de comando psql. Finalmente, você praticará o backup e a restauração de uma única tabela específica do seu banco de dados.

Nesta etapa, você criará um banco de dados PostgreSQL chamado salesdb e o preencherá com dados de exemplo. Este banco de dados servirá como base para as operações de backup e restauração nas etapas subsequentes.

Etapa 1: Criar o Banco de Dados

Primeiro, a partir do seu terminal, crie o banco de dados salesdb usando a utilidade de linha de comando createdb. Este é um wrapper conveniente para o comando SQL CREATE DATABASE.

createdb salesdb

Etapa 2: Conectar ao Banco de Dados

Em seguida, conecte-se ao seu banco de dados salesdb recém-criado usando o terminal interativo psql.

psql -d salesdb

Agora você verá o prompt do psql, que se parece com salesdb=#, indicando que você está conectado ao banco de dados salesdb.

Etapa 3: Criar Tabelas e Inserir Dados

Dentro do shell psql, execute os seguintes comandos SQL para criar duas tabelas: customers e products.

Crie a tabela customers:

CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
);

Crie a tabela products:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(10, 2)
);

Agora, insira alguns dados de exemplo em ambas as tabelas.

Insira dados em customers:

INSERT INTO customers (name) VALUES ('Alice'), ('Bob');

Insira dados em products:

INSERT INTO products (name, price) VALUES ('Laptop', 1200.00), ('Mouse', 25.00);

Etapa 4: Verificar os Dados

Para confirmar que os dados foram inseridos corretamente, execute consultas SELECT em ambas as tabelas.

SELECT * FROM customers;

A saída deve ser:

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Agora, verifique a tabela products:

SELECT * FROM products;

A saída deve ser:

 id |  name  |  price
----+--------+---------
  1 | Laptop | 1200.00
  2 | Mouse  |   25.00
(2 rows)

Finalmente, saia do shell psql para retornar ao seu terminal regular.

\q

Você configurou com sucesso o banco de dados para as próximas etapas.

Fazer Backup do Banco de Dados Completo

Nesta etapa, você usará a utilidade pg_dump para criar um backup completo do banco de dados salesdb. O pg_dump gera um arquivo contendo comandos SQL que podem ser usados para reconstruir o banco de dados.

Entendendo o pg_dump

O pg_dump é uma utilidade padrão do PostgreSQL para fazer backup de um único banco de dados. Ele cria um snapshot consistente do banco de dados, mesmo que ele esteja em uso ativo. Por padrão, ele gera um arquivo de script SQL em texto puro.

Etapa 1: Realizar o Backup

A partir do seu terminal, execute o seguinte comando para despejar (dump) o banco de dados salesdb em um arquivo chamado salesdb.sql dentro do seu diretório de projeto.

pg_dump salesdb > ~/project/salesdb.sql

Vamos detalhar o comando:

  • pg_dump salesdb: Isso especifica que você deseja fazer backup do banco de dados salesdb.
  • > ~/project/salesdb.sql: Isso redireciona a saída padrão do comando para um arquivo chamado salesdb.sql no diretório ~/project.

Etapa 2: Verificar o Arquivo de Backup

Primeiro, verifique se o arquivo foi criado usando o comando ls.

ls -l ~/project

Você deverá ver salesdb.sql na lista de arquivos.

Em seguida, inspecione o conteúdo do arquivo de backup para entender o que o pg_dump criou. Use o comando head para visualizar as primeiras linhas.

head ~/project/salesdb.sql

A saída mostrará o início do script SQL, incluindo comentários sobre a versão do pg_dump e comandos para configurar o ambiente do banco de dados. Isso confirma que seu arquivo de backup é um script SQL válido.

Restaurar o Banco de Dados a partir de um Backup

Nesta etapa, você aprenderá como restaurar um banco de dados a partir de um arquivo de backup SQL em texto puro. Você criará um novo banco de dados e, em seguida, usará a utilidade psql para executar os comandos SQL do seu arquivo de backup.

Entendendo a Restauração de Banco de Dados

Para arquivos SQL em texto puro criados pelo pg_dump, a utilidade psql é a ferramenta padrão para restauração. Ela lê os comandos SQL do arquivo e os executa contra o banco de dados especificado, recriando efetivamente as tabelas e os dados.

Etapa 1: Criar um Novo Banco de Dados para Restauração

Para evitar sobrescrever seu banco de dados original, você restaurará o backup em um novo banco de dados vazio. Crie um banco de dados chamado salesdb_restored.

createdb salesdb_restored

Etapa 2: Restaurar o Backup

Agora, use o psql para restaurar o backup salesdb.sql no banco de dados salesdb_restored.

psql -d salesdb_restored -f ~/project/salesdb.sql

Vamos detalhar o comando:

  • psql: O terminal interativo do PostgreSQL, que também pode executar arquivos de script.
  • -d salesdb_restored: Especifica o banco de dados de destino para a restauração.
  • -f ~/project/salesdb.sql: Especifica o arquivo de entrada contendo os comandos SQL a serem executados.

Você verá a saída dos comandos SQL sendo executados, como CREATE TABLE e INSERT.

Etapa 3: Verificar o Banco de Dados Restaurado

Conecte-se ao banco de dados salesdb_restored para verificar se as tabelas e os dados foram restaurados com sucesso.

psql -d salesdb_restored

Dentro do shell psql, primeiro liste as tabelas:

\dt

Você deverá ver as tabelas customers e products.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | customers | table | labex
 public | products  | table | labex
(2 rows)

Em seguida, consulte a tabela customers para garantir que os dados estejam presentes.

SELECT * FROM customers;

A saída deve corresponder aos dados originais.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Saia do shell psql.

\q

Você restaurou com sucesso um banco de dados a partir de um backup.

Fazer Backup e Restaurar uma Única Tabela

Às vezes, você pode precisar fazer backup ou restaurar apenas uma tabela específica em vez do banco de dados inteiro. A utilidade pg_dump suporta isso com a opção -t.

Etapa 1: Fazer Backup de uma Tabela Única

Vamos fazer backup apenas da tabela customers do banco de dados original salesdb.

Execute o seguinte comando no seu terminal:

pg_dump -d salesdb -t customers > ~/project/customers_table.sql
  • -d salesdb: Especifica o banco de dados de origem.
  • -t customers: Especifica a tabela de destino a ser despejada (dumped).
  • > ~/project/customers_table.sql: Redireciona a saída para um novo arquivo de backup.

Etapa 2: Simular Perda de Dados

Para demonstrar o processo de restauração, vamos primeiro remover (drop) a tabela customers do banco de dados salesdb_restored para simular uma exclusão acidental.

psql -d salesdb_restored -c "DROP TABLE customers;"

O comando exibirá DROP TABLE, confirmando a exclusão.

Etapa 3: Restaurar a Tabela Única

Agora, restaure a tabela customers do seu arquivo de backup específico da tabela para o banco de dados salesdb_restored.

psql -d salesdb_restored -f ~/project/customers_table.sql

Etapa 4: Verificar a Restauração da Tabela

Finalmente, conecte-se ao banco de dados salesdb_restored e verifique se a tabela customers está de volta, enquanto a tabela products permanece intocada.

psql -d salesdb_restored

Dentro do psql, liste as tabelas:

\dt

Você deverá ver as tabelas customers e products listadas novamente.

              List of relations
 Schema |   Name    | Type  |  Owner
--------+-----------+-------+----------
 public | products  | table | labex
 public | customers | table | labex
(2 rows)

Consulte a tabela restaurada customers para confirmar que seus dados estão intactos.

SELECT * FROM customers;

A saída deverá mostrar os dados originais dos clientes.

 id | name
----+-------
  1 | Alice
  2 | Bob
(2 rows)

Saia do shell psql.

\q

Você fez backup e restaurou com sucesso uma tabela individual.

Resumo

Neste laboratório, você aprendeu os procedimentos fundamentais para fazer backup e restaurar bancos de dados PostgreSQL. Essas habilidades são essenciais para a proteção de dados e recuperação de desastres.

Você aprendeu como:

  • Criar um banco de dados e populá-lo com tabelas e dados.
  • Usar pg_dump para exportar um banco de dados inteiro para um arquivo SQL em texto puro.
  • Usar psql para restaurar um banco de dados a partir de um arquivo de backup SQL em um novo banco de dados.
  • Fazer backup de uma única tabela de um banco de dados usando a opção -t com pg_dump.
  • Restaurar uma única tabela em um banco de dados.

Dominar esses comandos lhe dá a confiança para gerenciar e proteger seus dados PostgreSQL de forma eficaz.