BIZURAL: POSTGRESQL - GUIA COMPLETO PARA PROVA PRÁTICA

· CaioSimioni · Artigos

postgres@server:~ $ cat bizu_postgres.txt
==============================================================================
  BIZURAL POSTGRESQL - GUIA COMPLETO PARA PROVA PRÁTICA
  (Administração do Cluster | psql | pg_dump | pg_dumpall | pg_restore)
==============================================================================

[1] ADMINISTRAÇÃO DO CLUSTER — START/STOP/RELOAD/LOGS/pg_hba.conf
------------------------------------------------------------------------------
# Iniciar o cluster (-D aponta pro data directory):
pg_ctl -D . start

# Parar o cluster (padrão é "smart": espera clientes desconectarem):
pg_ctl -D . stop

# Parar "na marra", derrubando conexões e transações ativas (-m):
pg_ctl -D . stop -m immediate

# Reiniciar o cluster (equivale a stop + start):
pg_ctl -D . restart

# Ver status do cluster (rodando? PID? qual data directory?):
pg_ctl -D . status

# Recarregar config SEM derrubar conexões (só p/ parâmetros "reloadable",
# ex: pg_hba.conf, log_*, work_mem em alguns casos):
pg_ctl -D . reload

# Mesma coisa, mas de dentro do psql (não precisa de acesso ao shell do SO):
SELECT pg_reload_conf();

# [PEGADINHA DE PROVA] reload x restart quando o pg_hba.conf está QUEBRADO:
# - reload (SIGHUP): o Postgres detecta o erro, GRAVA no log "pg_hba.conf
#   was not reloaded" e CONTINUA rodando com a config ANTIGA (válida).
#   -> o cluster NÃO cai, mas sua alteração também não entra em vigor.
# - restart / start: o Postgres precisa LER o pg_hba.conf do zero pra
#   subir. Se ele estiver quebrado, o start FALHA e o cluster fica
#   FORA DO AR até você corrigir o arquivo.
#   -> "pg_ctl: could not start server / Examine the log output."

# Estrutura de uma linha do pg_hba.conf (5 campos obrigatórios):
# TYPE  DATABASE  USER  ADDRESS  METHOD
# host  all       all   0.0.0.0/0  scram-sha-256

# Erros clássicos de digitação nesse arquivo (e como aparecem no log):
# - Método de autenticação com o nome errado (ex: "passwor" em vez de
#   "password"/"md5"/"scram-sha-256"):
#   LOG: invalid authentication method "passwor"
#   CONTEXT: line 99 of configuration file ".../pg_hba.conf"
# - Faltou o campo METHOD no fim da linha (ou sobrou espaço/campo cortado):
#   LOG: end-of-line before authentication method
#   CONTEXT: line 99 of configuration file ".../pg_hba.conf"

# Boas práticas antes de editar o pg_hba.conf (evita cluster fora do ar):
cp pg_hba.conf pg_hba.conf.bak_$(date +%Y%m%d_%H%M)
vi pg_hba.conf

# Conferir rapidamente uma linha específica antes de reiniciar:
sed -n '99p' pg_hba.conf

# Se a config estiver ok, prefira RELOAD; só use RESTART se precisar
# de fato reiniciar o processo (ou se o reload não for suficiente).

# Onde ficam e como ler os logs do cluster:
cat current_logfiles

# Nome do log muda por dia da semana (log_filename = 'postgresql-%a.log'):
ls -l log/
tail -f log/postgresql-Wed.log

# Filtrar só erros/fatais recentes:
grep -E "ERROR|FATAL" log/postgresql-Wed.log

# Verificar se o cluster está aceitando conexões (sem precisar de senha):
pg_isready -h localhost -p 5888


[2] psql — CLIENTE INTERATIVO & EXECUÇÃO SQL
------------------------------------------------------------------------------
# Conectar a um banco de dados específico:
psql -h localhost -p 5888 -U smn -d carga_militar

# Executar um comando SQL direto do terminal:
psql -h localhost -p 5888 -U smn -d template1 -c "CREATE DATABASE carga_militar;"

# Executar um script .sql externo salvando logs/erros em arquivo (-o):
psql -h localhost -p 5888 -U smn -d carga_militar -f ~/script.sql -o ~/exec.log


[3] pg_dump — BACKUP DE UM BANCO DE DADOS
------------------------------------------------------------------------------
# Backup completo (-Fc) criando a base (-C):
pg_dump -h localhost -p 5888 -U smn -C -Fc -d carga_militar > ~/backup_carga_militar.dump

# [PEGADINHA DE PROVA] Backup de 3 tabelas específicas em um único comando (repetir -t):
pg_dump -h localhost -p 5888 -U smn -t militar -t punicao -t dependentes -Fc -d carga_militar > ~/backup_3_tabelas.dump

# Backup excluindo tabelas específicas (-T / --exclude-table):
pg_dump -h localhost -p 5888 -U smn -T dependentes -Fc -d carga_militar > ~/backup_sem_dependentes.dump

# Backup apenas dos DADOS sem a estrutura/DDL (-a / --data-only):
pg_dump -h localhost -p 5888 -U smn -a -Fc -d carga_militar > ~/backup_somente_dados.dump

# Backup apenas da ESTRUTURA/DDL sem os dados (-s / --schema-only):
pg_dump -h localhost -p 5888 -U smn -s -Fc -d carga_militar > ~/backup_schema.dump


[4] pg_dumpall — BACKUP DO CLUSTER INTEIRO (TODOS OS DBS/USUÁRIOS)
------------------------------------------------------------------------------
# Backup completo do cluster (somente saída em Plain Text SQL):
pg_dumpall -h localhost -p 5888 -U smn > ~/backup_cluster_completo.sql

# Backup apenas de Roles, Usuários e Permissões globais (--globals-only / -g):
pg_dumpall -h localhost -p 5888 -U smn --globals-only > ~/backup_globals.sql

# Backup apenas das estruturas DDL de todos os bancos (--schema-only / -s):
pg_dumpall -h localhost -p 5888 -U smn --schema-only > ~/backup_cluster_schema.sql


[5] pg_restore — RESTAURAÇÃO DE BACKUPS BINÁRIOS (-Fc)
------------------------------------------------------------------------------
# Restaurar criando a base (-C) usando o template1 de apoio:
pg_restore -h localhost -p 5888 -U smn -d template1 -C ~/backup_carga_militar.dump

# [PEGADINHA DE PROVA] Limpar/Dropar objetos antes de recriar (--clean / -c):
pg_restore -h localhost -p 5888 -U smn -d carga_militar --clean ~/backup_carga_militar.dump

# Restaurar APENAS uma tabela específica do arquivo .dump (-t):
pg_restore -h localhost -p 5888 -U smn -d carga_militar -t militar ~/backup_carga_militar.dump

# Restaurar em paralelo utilizando múltiplos jobs/threads (-j 4):
pg_restore -h localhost -p 5888 -U smn -d carga_militar -j 4 ~/backup_carga_militar.dump

# Listar o conteúdo / tabela de matérias do backup (-l):
pg_restore -l ~/backup_carga_militar.dump

postgres@server:~ $

<< voltar para Artigos