Buscar

ADMINISTRAÇÃO DO SGBD POSTGRESQL 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Administração do 
SGBD PostgreSQL
Camila Freitas Sarmento
Diretor Executivo 
DAVID LIRA STEPHEN BARROS
Gerente Editorial 
CRISTIANE SILVEIRA CESAR DE OLIVEIRA
Projeto Gráfico 
TIAGO DA ROCHA
Autora 
CAMILA FREITAS SARMENTO
A AUTORA
Camila Freitas Sarmento
Olá. Meu nome é Camila Freitas Sarmento. Sou formada em 
Telemática com mestrado em Ciência da Computação e, atualmente, 
doutoranda na área de Engenharia de Software, com uma experiência 
técnico-profissional na área de Soluções Digitais (Redes e Programação 
Back-End) de mais de sete anos. Atualmente sou Analista de Informática 
- Programadora Web Back-End no Instituto SENAI de Tecnologia em 
Automação Industrial (IST SENAI). Fui professora substituta na Universidade 
Estadual da Paraíba (UEPB) e atuei como professora substituta e, 
posteriormente, como tutora no Instituto Federal de Educação, Ciência 
e Tecnologia da Paraíba (IFPB). Sou apaixonada pelo que faço e adoro 
transmitir minha experiência àqueles que estão iniciando em suas 
profissões. Por isso, fui convidada pela Editora Telesapiens a integrar seu 
elenco de autores independentes. Estou muito feliz em poder ajudar você 
nesta fase de muito estudo e trabalho. Conte comigo!
ICONOGRÁFICOS
Olá. Esses ícones irão aparecer em sua trilha de aprendizagem toda vez 
que:
INTRODUÇÃO:
para o início do 
desenvolvimento de 
uma nova compe-
tência;
DEFINIÇÃO:
houver necessidade 
de se apresentar um 
novo conceito;
NOTA:
quando forem 
necessários obser-
vações ou comple-
mentações para o 
seu conhecimento;
IMPORTANTE:
as observações 
escritas tiveram que 
ser priorizadas para 
você;
EXPLICANDO 
MELHOR: 
algo precisa ser 
melhor explicado ou 
detalhado;
VOCÊ SABIA?
curiosidades e 
indagações lúdicas 
sobre o tema em 
estudo, se forem 
necessárias;
SAIBA MAIS: 
textos, referências 
bibliográficas e links 
para aprofundamen-
to do seu conheci-
mento;
REFLITA:
se houver a neces-
sidade de chamar a 
atenção sobre algo 
a ser refletido ou dis-
cutido sobre;
ACESSE: 
se for preciso aces-
sar um ou mais sites 
para fazer download, 
assistir vídeos, ler 
textos, ouvir podcast;
RESUMINDO:
quando for preciso 
se fazer um resumo 
acumulativo das últi-
mas abordagens;
ATIVIDADES: 
quando alguma 
atividade de au-
toaprendizagem for 
aplicada;
TESTANDO:
quando o desen-
volvimento de uma 
competência for 
concluído e questões 
forem explicadas;
SUMÁRIO
Conexão do PostgreSQL a Aplicações ................................................10
Conectando ao PostgreSQL Remotamente ................................................................ 10
Conectando ao Banco de dados PostgreSQL no Windows .......... 11
Conectando ao Banco de Dados PostgreSQL no Linux ................. 16
Conectando ao Banco de Dados PostgreSQL via PgAdmin ........................... 17
Componentes do PostgreSQL ................................................................21
Componentes de Acesso a Dados do PostgreSQL ............................................... 21
Componentes do Banco de Dados do PostgreSQL ..............................................23
Schemas .............................................................................................................................23
Tabelas .................................................................................................................................26
Componentes do Sistema de Arquivos do PostgreSQL.....................................27
DRBD .....................................................................................................................................27
LVM .........................................................................................................................................28
XFS ..........................................................................................................................................29
Buffering e Sincronização ........................................................................31
PostgreSQL Buffer........................................................................................................................... 31
Sincronização .................................................................................................................................... 36
Procedimento de Fallback ...................................................................... 40
Point in Time Recovery (PITR) no PostgreSQL ........................................................... 41
Replicação Física dos Dados do PostgreSQL ........................................................... 46
7
USANDO POSTGRESQL EM APLICAÇÕES
UNIDADE
03
Administração do SGBD PostgreSQL
8
INTRODUÇÃO
Que o PostgreSQL é o Sistema Gerenciador de Banco de Dados 
de código aberto mais utilizado no mundo você já sabe, não é mesmo? 
Agora, você sabia que uma das maiores preocupações nas empresas 
é como manter a integridade dos dados? Além de conectar o banco 
a aplicações, é preciso que os dados estejam seguros e garantidos 
quanto à recuperação de falhas e, ainda, levando em consideração as 
possibilidades de melhorar o desempenho e o tempo de resposta do 
sistema de gerenciamento do banco de dados. Você, como profissional 
da área, tem a responsabilidade de compreender e gerir essa questão 
da forma mais eficiente possível. Ao longo desta unidade letiva você vai 
mergulhar neste universo! Vamos lá!
Administração do SGBD PostgreSQL
9
OBJETIVOS
Olá. Seja muito bem-vindo à Unidade 3. Nosso propósito é auxiliar 
você no desenvolvimento das seguintes objetivos de aprendizagem até o 
término desta etapa de estudos:
1. Conectar aplicações ao PostgreSQL;
2. Utilizar os principais componentes de PostgreSQL em chamadas 
SQL dentro de aplicações;
3. Realizar os procedimentos de buffering e sincronização de dados 
com o PostgreSQL;
4. Reaver dados perdidos por meio do procedimento de fallback. 
Então? Preparado para uma viagem sem volta rumo ao conhecimento? 
Ao trabalho! 
Administração do SGBD PostgreSQL
10
Conexão do PostgreSQL a Aplicações
INTRODUÇÃO:
 Ao término deste capítulo, você será capaz de entender 
como funciona a conexão do PostgreSQL a aplicações, o 
que será fundamental para o exercício de sua profissão. Sem 
a conexão do PostgreSQL configurada adequadamente, o 
banco de dados só poderá ser acessado localmente. Dessa 
forma, o acesso remoto torna-se inviável. Para evitar esse 
transtorno e habilitar o acesso remoto realizando a conexão 
do PostgreSQL a aplicações, é necessário seguir algumas 
estratégias. E então, motivado para desenvolver essa 
competência? Vamos lá!.
Conectando ao PostgreSQL Remotamente
Nas etapas anteriores, você viu como conectar-se ao PostgreSQL a 
partir da linha de comando usando o psql. Vamos relembrar? É bem simples! 
Na linha de comando, é só digitar: psql nomeDoBanco nomeDoUsuário
. Lembre-se de substituir o nomeDoBanco pelo nome do banco de 
dados e nomeDoUsuário pelo nome do usuário. Em seguida, será 
solicitada a senha do usuário do banco de dados, então, ao digitá-la 
corretamente, o prompt do psql é exibido.
Após a instalação do PostgreSQL, é necessário ajustar dois arquivos 
de configuração para que seja permitido o acesso remoto, pois, por 
padrão, o PostgreSQL vem configurado apenas para acesso local.
Sendo assim, veremos como realizar a conexão configurando 
o acesso ao banco de dados PostgreSQL por meio do pgAdmin, no 
Windows e no Linux.
Administração do SGBD PostgreSQL
11
Conectando ao Banco de dados PostgreSQL no 
Windows
Por padrão, ao instalar o PostgreSQL, é criado o arquivo pg_hba.
conf, utilizado para autenticar os usuários. Não exige uma senha, mas está 
configurado apenas para conexão local.
O pg_hba.conf normalmente fica no seguinte diretório: C:\Program 
Files\PostgreSQL\12\data, cujo arquivo final, a partir da linha 77, deve 
seguir o padrão conforme a Figura 1.
Figura 1 : Arquivo pg_hba.conf
Fonte: Elaborado pela autora.
Vamos compreenderos campos arquivo: 
 • Type – especifica o tipo da conexão, que pode ser: Local (especifica 
que é um host local); Host (pode ser uma conexão criptografada ou 
não); Hostssl (permite apenas conexão criptografada); e Hotnossl 
(permite conexão apenas para texto).
 • Database – é o banco de dados que será liberado para a conexão. 
Seus termos são: sameuser (quando o usuário tiver o mesmo nome 
do banco); samerole (quando o usuário pertencer ao mesmo role do 
banco); e, como o exemplo da Figura 1, all (que são todos os bancos 
de dados locais). Para alguma base de dados específica, basta inserir 
o nome.
 • User – é o usuário que terá acesso ao banco de dados. Neste caso, 
all, significa que todos os usuários podem acessar o banco.
 • Address – é o campo que indica o endereço IP ou a rede na qual há 
a permissão para o acesso ao banco de dados que, no exemplo, é a 
conexão local.
Administração do SGBD PostgreSQL
12
Method – é o método de autenticação do usuário. Trust para 
conexões confiáveis sem senha, e md5 para a solicitação de senha que já 
foi cadastrada previamente no banco de dados.
Exemplo: Vamos tomar como exemplo a seguinte situação: 
você é o administrador do SGBD e precisa disponibilizar o acesso com 
autenticação para o seu colega, Dulbodore, que é do marketing e está na 
rede 10.10.10.7. O que você faria? A resposta é simples! É só acrescentar 
uma linha ao arquivo pg_hba.conf, conforme a Figura 2.
Figura 2 : Disponibilização de acesso de usuário por meio do pg_hba.conf
Fonte: Elaborado pela autora.
Passo a passo: Para a liberação no Windows, é necessário autorizar 
a porta do postgresql no firewall. Lembra-se do número padrão da porta 
do postgres que criamos na unidade anterior? Se você disse 5432, acertou! 
Agora, vamos ao passo a passo para a configuração.
1. Acesse Painel de controle > Sistema e Segurança > Windows Defender 
Firewall (ver Figura 3) e clique em Configurações Avançadas (Figura 4).
2. Ao abrir a nova janela, conforme observado na Figura 5, clique em 
regras de entrada e, depois, em Nova Regra.
3. Na nova janela, escolha a opção Porta. Selecione TCP, digite 5432 (ver 
Figura 6) em Portas Locais Específicas e clique em avançar.
4. Em seguida, escolha a opção Permitir Conexão e clique em avançar.
5. Na nova janela, escolha qual regra se aplica:
a. Domínio: aplica-se quando um computador está conectado ao seu 
domínio corporativo.
Administração do SGBD PostgreSQL
13
b. Particular: aplica-se quando um computador está conectado a um 
local de rede privada, como residência ou local de trabalho.
c. Pública: aplica-se quando um computador está conectado a um local 
de rede pública.
6. Escolha um nome para a nova regra (ex., Acesso externo postgresql) 
e, opcionalmente, uma descrição, então, clique em finalizar para 
confirmar a nova regra criada.
7. Por fim, é só reiniciar ou dar um reload no serviço PostgreSQL (Iniciar > 
executar:services.msc) para ativar as configurações realizadas.
Figura 3 : Caminho para configurações avançadas do firewall
Fonte: Elaborado pela autora.
Administração do SGBD PostgreSQL
14
Figura 4 : Janela de configurações avançadas do firewall do Windows
 
Fonte: Elaborado pela autora.
Figura 5 : Criando uma nova regra
Fonte: Elaborado pela autora.
Administração do SGBD PostgreSQL
15
Figura 6 : Especificando o número da porta para o firewall
Fonte: Elaborado pela autora.
Figura 7 : Confirmação da configuração 
Fonte: Elaborado pela autora.
Administração do SGBD PostgreSQL
16
Conectando ao Banco de Dados PostgreSQL no 
Linux
Para habilitar o acesso remoto ao banco de dados PostgreSQL no 
Linux, é muito simples. Assim como o Windows, o Linux também requer 
a configuração do arquivo pg_hba.conf e do postgresql.conf. Para isso, 
vamos utilizar o editor vi do Linux para editar o primeiro arquivo, pg_hba.
conf, por meio do seguinte comando:
vi /var/lib/pgsql/data/pg_hba.conf
Passo a passo: Agora que você tem o arquivo aberto, siga um passo 
a passo para a configuração remota:
1. Você pode dar permissão para todos os acessos remotos ou para um 
IP específico. Vejamos os dois casos:
a. Para todas as conexões remotas e todos os usuários, iremos 
acrescentar ao documento a seguinte linha:
host all all 0.0.0.0/0 md5
b. Para dar permissão apenas para um usuário e para IP específicos, 
podemos utilizar o seguinte exemplo: adicionar o usuário Dulbodore 
do setor de marketing, cujo IP é 10.10.10.7/24:
host marketing dulbodore 10.10.10.7/24 md5
2. Agora, basta salvar o arquivo e fechar o editor. Assim, nosso próximo 
passo será a edição do arquivo postgresql.conf por meio do seguinte 
comando:
vi /var/lib/pgsql/data/postgresql.conf
a. Ao abrir o arquivo de edição, você irá fazer a busca por listen_
address=‘localhost‘ e remover o comentário (#), se houver. Em 
seguida, poderá trocar o ‘localhost‘ pelo IP desejado ou inserir ‘*‘ para 
habilitar para todos. Vejamos o exemplo com um IP:
listen_address=‘192.168.12.7‘
Administração do SGBD PostgreSQL
17
b. Ainda no mesmo documento, procure a porta e remova o comentário (#):
port = 5432
3. No último passo, salve o documento e reinicie o serviço do PostgreSQL 
por meio do seguinte comando:
service postgresql restart
Conectando ao Banco de Dados 
PostgreSQL via PgAdmin
Passo a passo: Até agora, já sabemos que o pgAdmin é compatível 
com os sistemas operacionais Windows, Linux e Mac. Sendo assim, vamos 
mostrar como se realiza uma conexão ao banco de dados PostgreSQL por 
meio do pgAdmin. 
1. No menu iniciar, busque PgAdmin e abra-o.
NOTA:
Para isso, você precisa ter o pgAdmin instalado no seu 
computador. Como já mostramos o processe de instalação 
na Unidade anterior, vamos considerar que você já o tem 
disponível em sua máquina. Além disso, lembre-se da 
senha que você utilizou. 
2. Na tela inicial, clique com o botão direito em Servers, depois escolha 
Create > Server. Você também poderá utilizar o link de atalho do 
pgAdmin, como pode ser observado na Figura 8.
Figura 8 : Criar uma nova conexão remota
Administração do SGBD PostgreSQL
18
Fonte: Elaborado pela autora.
3. Agora, na aba Connection, basta preencher dos dados de configuração. 
Na Figura 9 podemos observar o seu preenchimento.
Figura 9 : Preenchendo dados de conexão
Fonte: Elaborado pela autora.
Administração do SGBD PostgreSQL
19
4. Pronto! Agora é só clicar no servidor ao lado esquerdo do painel do 
pgAdmin (ver Figura 10) que você deseja manipular.
Figura 10 : Localizando a conexão criada
Fonte: Elaborado pela autora.
SAIBA MAIS:
Quer se aprofundar neste tema? Recomendamos o acesso 
à seguinte fonte de consulta: Artigo: “Como alterar a senha 
de uma base de dados” (BRASIL, 2020), acessível pelo link: 
https://bit.ly/3dtHhZ7
Administração do SGBD PostgreSQL
https://bit.ly/3dtHhZ7
20
RESUMINDO:
E então, gostou do que mostramos? Aprendeu mesmo 
tudinho? Agora, só para termos certeza de que você 
realmente entendeu o tema de estudo deste capítulo, 
vamos resumir tudo. Você deve ter aprendido que podemos 
realizar a conexão do PostgreSQL a aplicações por diversas 
formas, seja por linha de comando ou ambiente gráfico. 
Vimos também que, além do Windows e do Linux, é 
possível configurar por meio do pgAdmin, pois é compatível 
com Windows, Linux e Mac. Também, aprendemos a inserir 
permissões de conexão para um usuário específico em um 
ambiente, um grupo ou um endereço IP. Ainda, mostramos 
como realizar a configuração no arquivo postgresql.conf e 
no pg_hba.conf, nos ambientes Windows e Linux.
Administração do SGBD PostgreSQL
21
Componentes do PostgreSQL
INTRODUÇÃO:
Agora que você já sabe realizar conexão do PostgreSQL 
a aplicações, vamos para o próximo passo. Ao término 
deste capítulo você conhecerá os principais componentes 
do PostgreSQL, além de aprender a escolher quais 
componentes serão instalados. Você sabia que esse 
tipo de trabalho é extremamente importante para uma 
empresa? Sabendo a funcionalidadedos componentes e 
sua utilidade junto à empresa, é o que garante o sucesso 
de uma boa administração do sistema de gerenciamento 
de banco de dados. Isso é uma grande responsabilidade, 
não é mesmo? Então, vamos lá! .
Componentes de Acesso a Dados do 
PostgreSQL
DEFINIÇÃO:
O componente de acesso a dados PostgreSQL, do inglês 
PostgreSQL Data Access Components (PgDAC) é uma 
biblioteca de componentes que fornece conectividade 
nativa para PostgreSQL de Delphi e C++ Builder, incluindo 
Community Edition, bem como Lazarus (e Free Pascal) no 
Windows, Linux, macOS, iOS e Android para plataformas 
de 32 e de 64 bits. O PgDAC foi projetado para ajudar os 
programadores a desenvolverem aplicativos de banco de 
dados PostgreSQL realmente leves, mais rápidos e mais 
limpos, sem implantar quaisquer bibliotecas adicionais. 
Ele fornece acesso direto ao PostgreSQL sem o cliente 
PostgreSQL.
O PostgreSQL Data Access Components vem em duas edições: 
Standard, que inclui os componentes básicos e conectividade do 
PgDAC, e Profissional, que oferece suporte para recursos avançados de 
Administração do SGBD PostgreSQL
22
gerenciamento de conjunto de dados. Sendo assim, temos os seguintes 
componentes de acesso a dados:
 • TPgConnection – é usado para manter a conexão com um banco de 
dados PostgreSQL. Depois da definição das propriedades de nome de 
usuário, senha, servidor e base de dados, é possível estabelecer uma 
conexão com o banco de dados chamando o método Connect ou 
definindo a propriedade Connect como true. Existem também muitas 
propriedades no nível da conexão que afetam o comportamento 
padrão das consultas executadas nesta conexão.
 • TPgQuery – é utilizado para realizar busca, inserção, exclusão e 
atualização de registro por instruções SQL geradas dinamicamente. 
Para modificar registros, você pode especificar KeyFields. Se eles 
não forem especificados, TPgQuery irá recuperar as chaves primárias 
para UpdatingTable dos metadados. O TPgQuery pode atualizar 
automaticamente apenas uma tabela. A atualização da tabela é 
definida pela propriedade UpdatingTable se essa propriedade estiver 
configurada. Caso contrário, a tabela cujo campo é o primeiro na 
lista de campos na cláusula SELECT, é usada como uma tabela de 
atualização.
 • TPgSQL – é utilizado quando um aplicativo cliente precisa executar 
a instrução SQL ou o bloco PL/SQL e chamar o procedimento 
armazenado no servidor de banco de dados. A instrução SQL não 
deve recuperar linhas do banco de dados.
 • TPgTable – é utilizado para recuperar e atualizar dados em uma única 
tabela sem escrever instruções SQL.
 • TPgStoredProc – é útil para acessar procedimentos armazenados 
no servidor de banco de dados. Para isso, é necessário definir a 
propriedade StoredProcName, e a instrução SQL para chamar o 
procedimento armazenado será gerada automaticamente.
 • TPgUpdateSQL – permite ajustar as operações de atualização para o 
componente DataSet.
Componentes do Banco de Dados do 
Administração do SGBD PostgreSQL
23
PostgreSQL
DEFINIÇÃO:
De acordo com Juba e Volkov (2019, p. 75), os componentes 
de um banco de dados do PostgreSQL podem ser 
considerados um contêiner para schemas de banco de 
dados que são usados para organizar tabelas (como um 
objeto central do banco de dados). 
Dessa forma, o banco de dados deve conter pelo menos um 
schema de banco de dados que é usado para organizar os objetos de 
maneira semelhante a namespaces em linguagens de programação de 
alto nível. Vejamos melhor os schemas e as tabelas:
Schemas
Na Unidade anterior, aprendemos que um schema (esquema) é 
um namespace que organiza o banco de dados em grupos lógicos que 
pertence a um usuário do banco de dados. Agora vamos conhecer os 
objetos que são nomeados pelo banco de dados e que estão contidos 
em um schema. 
Os nomes dos objetos podem ser reutilizados em diferentes schemas 
sem conflito. O esquema contém todos os objetos nomeados pelo banco 
de dados, incluindo tabelas, visualizações, funções, agregações, índices, 
sequências, gatilhos, tipos de dados, domínios e intervalos. Vejamos a 
estrutura na Figura 11.
Administração do SGBD PostgreSQL
24
Figura 11 : Objetos do schema
Fonte: Elaborado pela autora.
Por padrão, existe um esquema chamado public no modelo do 
banco de dados. Isso significa que todos os bancos de dados recém-
criados também contêm esse esquema, ou seja, todos os usuários, 
por padrão, podem acessá-lo implicitamente. Permitir esse padrão de 
acesso simula uma situação em que o servidor não reconhece o schema, 
tornando-se útil em pequenas empresas em que não há a necessidade 
de uma segurança complexa. Além disso, permite uma transição suave 
de bancos de dados sem reconhecimento de schema.
Além disso, segundo Juba e Volkov (2019, p. 75), quando um usuário 
deseja acessar determinado objeto, é necessário especificar o nome 
do esquema e o nome do objeto separados por um ponto (.). Caso a 
configuração search_path do banco de dados não contenha esse nome, 
ou se o desenvolvedor prefere usar nomes completos (por exemplo, para 
Administração do SGBD PostgreSQL
25
selecionar todas as entradas em pg_database no schema pg_catalog), é 
necessário escrever o seguinte comando:
SELECT * FROM pg_catalog.pg_database;
Como alternativa, você também pode usar este comando:
TABLE pg_catalog.pg_database;
Muito desenvolvedores deixam de escrever nomes de objetos 
de banco de dados qualificados por serem tediosos de escrever, então, 
preferem usar o nome de objeto não qualificado, composto apenas pelo 
nome do objeto, sem o schema. Para isso, o PostgreSQL fornece uma 
configuração search_path semelhante à diretiva using na linguagem C++.
O caminho de pesquisa é composto de schemas que são usados 
pelo servidor para pesquisar o objeto. O caminho de pesquisa padrão, 
conforme mostrado no código a seguir, é $user,public. 
SHOW search_path; 
 -------------- 
 $user,public
IMPORTANTE:
Caso tenha um schema com o mesmo nome do usuário, ele 
será usado primeiro para pesquisar objetos ou criar novos 
objetos, e se o objeto não for encontrado nos schemas 
especificados, será gerado um erro no search_path.
Os esquemas são usados pelos seguintes motivos: 
 • Autorizar o controle: em um ambiente de banco de dados 
multiusuário, pode-se usar esquemas para agrupar objetos com base 
em funções.
 • Organizar objetos de banco de dados: pode-se organizar os objetos 
de banco de dados em grupos com base na lógica de negócios. Por 
exemplo, dados históricos e de auditoria podem ser agrupados e 
organizados logicamente em um esquema específico.
 • Manter código SQL de terceiros: as extensões disponíveis no pacote 
de contribuição podem ser usadas com vários aplicativos. Manter 
Administração do SGBD PostgreSQL
26
essas extensões em esquemas separados permite ao desenvolvedor 
reutilizá-las e atualizá-las facilmente.
Tabelas
A instrução CREATE TABLE SQL pode ser usada para diversos fins, 
como clonar uma tabela, o que é útil para refatoração de banco de dados 
para criar o script de desinstalação para reverter as alterações. Além disso, 
pode ser usado para materializar o resultado da instrução SELECT SQL 
para aumentar o desempenho ou temporariamente armazenar os dados 
para uso posterior.
Juba e Volkov (2019) afirmam que, no PostgreSQL, as tabelas podem 
ser de diferentes tipos:
 • Tabela permanente: seu ciclo de vida começa com a criação e 
termina com a eliminação da tabela.
 • Tabela temporária: seu ciclo de vida é a sessão do usuário. Isso é 
frequentemente usado com linguagens procedurais para modelar 
alguma lógica de negócios.
 • Tabela não registrada: as operações em tabelas não registradas são 
muito mais rápidas do que em tabelas permanentes, porque os dados 
não são gravados nos arquivos WAL (Write-Ahead Log). Tabelas não 
registradas não são seguras contra travamentos. Além disso, como a 
replicação de streaming é baseada no envio de arquivosde log, as 
tabelas não registradas não podem ser replicadas para o nó escravo.
 • Tabela filha: é uma tabela que herda uma ou mais tabelas. A 
herança é frequentemente usada com exclusão de restrição para 
particionar fisicamente os dados no disco rígido e obter desempenho 
na recuperação de um subconjunto de dados que contém um 
determinado valor.
Administração do SGBD PostgreSQL
27
Componentes do Sistema de Arquivos do 
PostgreSQL
Você sabia que mesmo tendo uma estrutura completa de hardware 
e software dedicados, os servidores ainda não trabalharão corretamente 
sem usar os componentes especificados pelo administrador? De acordo 
com Thomas (2020, p. 477), os servidores ainda não têm três importantes 
funções:
 • Capacidade de sincronizar dados para dois servidores 
simultaneamente.
 • Capacidade de congelar dados para evitar alterações para fins de 
backup.
 • Um sistema de arquivos durável e projetado para multiprocessamento 
de Entrada/Saída.
Há no mercado várias abordagens para cada um desses elementos 
não suportados automaticamente pelo servidor. Contudo, seguindo as 
diretrizes de Thomas (2020, p. 477), vamos apresentar três abordagens: 
DRBD, LVM e XFS.
DRBD
DEFINIÇÃO:
Do inglês Distributed Replicated Block Device, o DRBD 
é um dispositivo de bloco de replicação distribuída que 
opera abaixo da camada do sistema de arquivos e espelha 
todo o conteúdo armazenado no servidor para outro nível 
de bloco, ou seja, o sistema operacional não enxerga que 
os dados estão localizados em outro servidor. Para uma 
melhor compreensão, vejamos a Figura 12.
Administração do SGBD PostgreSQL
28
Figura 12 : Estrutura do DRBD
Fonte: Thomas, 2020, p. 477 (Adaptado).
O DRBD atua como uma abstração do dispositivo de disco que 
normalmente hospeda o banco de dados PostgreSQL. A vantagem 
principal é que os dados estão sempre localizados em pelo menos dois 
servidores em tempo integral. Se um servidor falhar e seu armazenamento 
tornar-se inutilizável, haverá um backup disponível.
LVM
DEFINIÇÃO:
Do inglês Logical Volume Manager, o LVM é uma camada 
de abstração que fica entre o sistema de arquivos e 
os dispositivos de disco subjacentes, possibilitando o 
gerenciamento de forma dinâmica dos dispositivos de 
disco como uma única peça contínua de armazenamento 
e, assim, permitindo estender, agrupar, congelar ou 
reorganizar arbitrariamente de forma online.
Com o LVM, é possível mover dados de um dispositivo para outro 
após uma atualização, ou seja, permite adicionar armazenamento a um 
sistema de arquivos sem links simbólicos. 
Dessa forma, usando um servidor moderno com discos hot-
swappable ou uma rede de área de armazenamento (SAN), exclui a 
necessidade de reinicializar o servidor para reconfigurar completamente 
seus dispositivos de disco. Ainda assim, diante de todo o processo de 
Administração do SGBD PostgreSQL
29
quase qualquer alteração do LVM, o PostgreSQL pode permanecer online 
e solicitar serviços.
XFS
DEFINIÇÃO:
Do inglês Extents File System, o XFS tem a estrutura 
do sistema de arquivos do tipo journaling e fornece 
crescimento online, congelamento de LVM e vários tipos 
de manutenção e de ferramentas de reparo.
Apesar de o XFS e o EXT4 serem sistemas de arquivos com 
journaling, o XFS tem a vantagem de realizar grupos de alocação. Por um 
lado, o EXT4 contém apenas uma única tabela de alocação do arquivo 
para todo o dispositivo formatado; já o XFS permite dividir a tabela de 
alocação em vários segmentos.
Com a possibilidade da divisão da tabela de alocação no XFS, 
então, vários processos de CPU independentes podem gravar no 
disco simultaneamente e, consequentemente, possibilita que grandes 
servidores com múltiplas CPUs e gravações aleatórias, como um banco 
de dados PostgreSQL, tenham um melhor desempenho.
SAIBA MAIS:
O criador do DRBD disponibilizou uma documentação 
bastante detalhada sobre soluções de problemas do 
sistema: “The DRBD User’s Guide”, acessível pelo link: 
https://bit.ly/2H3VRun
Administração do SGBD PostgreSQL
https://bit.ly/2H3VRun
30
RESUMINDO:
Chegamos ao fim do nosso capítulo. Gostou do que 
mostramos? Aprendeu mesmo tudinho? Agora, só para 
ter certeza de que você realmente entendeu o tema de 
estudo deste capítulo, vamos resumir tudo. Você deve 
ter aprendido que há várias abordagens quando se trata 
de componentes do PostgreSQL. Apresentamos os 
componentes de acesso a dados do PostgreSQL, que é 
uma biblioteca de componentes que fornece conectividade 
nativa para PostgreSQL de Delphi e C++ Builder incluindo 
Community Edition, bem como Lazarus (e Free Pascal) no 
Windows, Linux, macOS, iOS e Android, para plataformas 
de 32 e de 64 bits. Também vimos com mais detalhes dois 
principais componentes do banco de dados: schemas e 
tabelas. Além disso, aprendemos três abordagens: DRBD, 
LVM e XFS, que melhoram o desempenho do servidor.
Administração do SGBD PostgreSQL
31
Buffering e Sincronização
INTRODUÇÃO:
Agora que você já sabe quais são os componentes 
do PostgreSQL (componentes de acesso a dados, 
componentes do banco de dados e os componentes do 
sistema de arquivos), vamos para o próximo passo. Ao 
término deste capítulo você irá compreender o processo 
de buffering e sincronização do PostgreSQL. Além disso, 
aprenderá a implementar o controle transacional dos dados 
com comandos como commit, checkpoint etc. Você sabia 
que a configuração padrão do PostgreSQL não é ajustada 
para nenhuma carga de trabalho específica? Ajustar o 
PostgreSQL de acordo com a carga de trabalho do sistema 
é uma das principais responsabilidades do administrador 
ou desenvolvedor do banco de dados, pois é com isso que 
garantimos o melhor desempenho para o servidor. É uma 
grande responsabilidade, não é mesmo? Então, vamos lá 
PostgreSQL Buffer
O PostgreSQL usa seu próprio buffer e o processo de Entrada/Saída 
com buffer de kernel, isto é, os dados são armazenados na memória duas 
vezes, primeiro no buffer do PostgreSQL e depois no buffer do kernel. 
Ao contrário de outros bancos de dados, o PostgreSQL não fornece 
o processo de Entrada/Saída direto. Isso é chamado de buffer duplo. Logo, 
o buffer PostgreSQL é chamado de shared_buffer, que é o parâmetro 
ajustável mais eficaz para a maioria dos sistemas operacionais, ou seja, é 
a quantidade de memória que o servidor de banco de dados PostgreSQL 
usa para cache com o propósito de acesso rápido aos dados.
Na maioria das máquinas modernas, é necessário aumentar o valor 
padrão do buffer para obter um desempenho ideal; o valor padrão para 
buffers compartilhados é 128 MB, porém, é recomendável defini-lo para 
cerca de 25% da memória total.
Administração do SGBD PostgreSQL
32
Às vezes, aumentar o shared_buffer para um valor muito alto pode 
elevar o desempenho, porque o banco de dados pode ser completamente 
armazenado em cache na RAM. Contudo, a desvantagem de aumentar 
demais esse valor é que ele pode ficar impossibilitado de alocar memória 
para operações de CPU, como classificação e hash.
A configuração realmente depende do hardware e do conjunto de 
dados que são manipulados. Caso esse conjunto de dados de trabalho 
caiba facilmente na memória RAM, é possível que o valor de shared_
buffer seja elevado, para conter seu banco de dados inteiro, de forma que 
todo o conjunto de dados de trabalho resida no cache.
Em ambientes de produção, é observado que um grande valor para 
shared_buffer dá um desempenho realmente bom, embora você deva 
sempre fazer benchmark para encontrar o equilíbrio certo.
Ainda se lembra de como abrir o psql? Vamos precisar dele. Caso 
não se lembre: no Windows, basta pesquisar por SQL Shell e abrir o 
terminal; no Linux, você pode digitar sudo sudo su - postgres e depois 
psql no terminal.
Com isso, podemos verificar o valor alocado para o shared_buffer 
no sistema (vejamos melhor na Figura 13) a partir do seguinte comando:
SHOW shared_buffers;
Figura 13 : Tamanho alocado para o shared_bufferFonte: Elaborado pela autora.
Administração do SGBD PostgreSQL
33
Você também se perguntou como obter uma estimativa da memória 
disponível para cache de disco? Para isso existe uma orientação, não a 
memória alocada exata ou o tamanho do cache. 
O effective_cache_size fornece a quantidade de memória 
disponível para cache de disco, mas ele apresenta apenas uma estimativa, 
e não a memória alocada exata ou o tamanho do cache. Ainda, não é 
alocada a memória real, mas informa ao otimizador a quantidade de 
cache disponível no kernel. Se o valor dele for definido como muito baixo, 
o planejador de consulta pode decidir não usar alguns índices, mesmo 
que eles sejam úteis.
A configuração work_mem é usada para a classificação complexa, 
e, para esses casos, sugere-se aumentar o valor dela para obter bons 
resultados, além de suas classificações serem mais rápidas em relação às 
transmitidas para o disco. 
Definir um valor muito alto de work_mem pode causar um gargalo 
de memória para o ambiente de implementação, porque esse parâmetro 
é por operação de classificação do usuário. Portanto, se houver muitos 
usuários tentando executar operações de classificação, o sistema alocará 
work_mem * total sort operations para todos os usuários. Ainda assim, 
definir esse parâmetro de forma global pode causar uso de memória muito 
alto. Então, é altamente recomendável modificá-lo no nível da sessão.
Exemplo: Vejamos um exemplo de como aumentar o valor do 
work_mem comparando o retorno da consulta query:
Administração do SGBD PostgreSQL
34
O nó de classificação da consulta inicial tem um custo estimado 
de 514431,86. Custo é uma unidade de cálculo arbitrária. Para a consulta 
acima, temos um work_mem de apenas 2 MB. Para fins de teste, vamos 
aumentar para 256 MB e ver se há algum impacto no custo. Vejamos o 
comando:
Administração do SGBD PostgreSQL
35
Dessa forma, diante dos exemplos, podemos observar que o custo 
da consulta foi reduzido de 514431,86 para 360617,36 - uma redução 
média de 30%.
O maintenance_work_mem é uma configuração de memória 
usada para tarefas de manutenção. O valor padrão é 64 MB. Definir um 
valor alto ajuda em tarefas como: VACUUM, RESTORE, CREATE INDEX, 
ADD FOREIGN KEY e ALTER TABLE. Uma vez que apenas uma dessas 
operações pode ser executada por vez por uma sessão de banco de dados, 
e uma instalação normalmente não tem muitas delas sendo executadas 
simultaneamente, é seguro definir esse valor significativamente maior do 
que work_mem. Configurações maiores podem melhorar o desempenho 
para limpar e restaurar dumps do banco de dados.
NOTA:
Perceba que, quando autovacuum é executado, até 
autovacuum_max_workers pode ser alocada, então, tome 
cuidado para não definir o valor padrão muito alto.
Exemplo: Vejamos um exemplo do retorno aumentando o valor de 
maintenance_work_mem de 10 MB pra 256 MB, observando o tempo de 
resposta:
Administração do SGBD PostgreSQL
36
O que você concluiu mediante os dois retornos? Perceba que, 
quando definimos 10 MB, o tempo de criação do índice é 170091,371 ms, 
e quando aumentamos a configuração para 256 MB, é reduzido para 
111274,903 ms.
Sincronização
IMPORTANTE:
Às vezes, para fornecer a durabilidade aceitável de dados, 
uma configuração de alta disponibilidade deve utilizar 
confirmações síncronas. A partir do PostgreSQL 9.1, os 
servidores de banco de dados agora podem se recusar 
a confirmar uma transação até que os dados estejam 
localizados em pelo menos um servidor alternativo. Ao 
contrário da replicação assíncrona, em que isso é opcional, 
as réplicas síncronas impõem esse requisito a uma falha.
Nesta seção teremos como exemplo a forma de alterar a 
configuração de espera para incluir a replicação de streaming síncrono, 
isto é, vamos mostrar como configurar um servidor assíncrono em espera 
para o modo síncrono.
Inicialmente, devemos modificar a configuração primary_conninfo 
no arquivo postgresql.conf ou recovery.conf do standby para incluir o valor 
application_name. O PostgreSQL diferencia as réplicas por seu nome de 
aplicativo declarado, portanto, se mudarmos isso, poderemos ter como 
alvo especificamente aquela réplica em particular. Além disso, quaisquer 
outros nós de espera síncronos devem receber nomes diferentes.
Administração do SGBD PostgreSQL
37
Neste caso, quando reiniciamos o servidor PostgreSQL no modo de 
espera de streaming, ele se reconecta ao servidor primário com o novo 
valor de application_name que atribuímos.
A partir disso, podemos nos referir ao servidor em espera como 
servha2 e, portanto, quando alteramos as variáveis synchronous_
standby_names e synchronous_commit no arquivo postgresql.conf do 
servidor primário, devemos usar o mesmo nome no local.
Sempre que desejamos alterar a variável synchronous_standby_
names, precisamos apenas dizer ao PostgreSQL para recarregar seus 
arquivos de configuração. Isso irá fazer com que o nó primário considere 
o servha2 um servidor em espera síncrono, e qualquer transação só será 
confirmada se puder gravar neste servidor, assim como no primário.
IMPORTANTE:
Essa é uma compensação entre desempenho e 
confiabilidade. Se seu aplicativo for projetado de forma que o 
desempenho seja mais importante do que a confiabilidade, 
desative o synchronous_commit. Isso significa que haverá 
um intervalo de tempo entre o status de sucesso e uma 
gravação garantida no disco. No caso de falha do servidor, 
os dados podem ser perdidos mesmo que o cliente receba 
uma mensagem de sucesso na confirmação.
Depois de recarregar os arquivos de configuração do servidor 
primário, podemos verificar a exibição pg_stat_replication para observar 
como o streaming está funcionando e, depois de executar a consulta, 
veremos algo assim:
Administração do SGBD PostgreSQL
38
Pronto! Como podemos ver neste exemplo, o servidor primário vê o 
servha2 como uma réplica de streaming síncrono.
Agora, para confirmar se a replicação de streaming funcionou 
corretamente, é preciso desligar o servidor em espera. Para isso, usamos 
o seguinte comando:
sudo systemctl stop postgresql-12
Em seguida, para testar, tente gravar uma instrução qualquer 
no servidor principal. Esta simples instrução SQL deve esperar 
indefinidamente:
CREATE TABLE teste (bar INT);
Se reiniciarmos a réplica de streaming usando o seguinte comando, 
veremos a transação concluída:
sudo systemctl start postgresql-12
E então? O que você concluiu desse teste que realizamos? Perceba 
que esse procedimento pode ser problemático, principalmente em 
servidores que abrangem a maior parte dos clusters altamente disponíveis. 
Se quisermos tentar o experimento novamente, podemos primeiro 
emitir esta instrução SQL antes de tentar uma consulta de gravação básica:
SET synchronous_commit TO false;
Esse procedimento desativa temporariamente a replicação síncrona 
para a sessão atual. As consultas de gravação subsequentes nessa 
conexão devem ser bem-sucedidas normalmente, como se o servidor 
remoto fosse uma cópia assíncrona padrão.
Outra abordagem são os checkpoints, que são parte integrante 
de um servidor PostgreSQL. Os dados da tabela não são modificados 
durante a execução da consulta até que as linhas modificadas, páginas de 
índice e outras estruturas sejam confirmadas no Log Write-Ahead (WAL). 
Arquivos WAL também são conhecidos como segmentos de checkpoint. 
Quando o tamanho cumulativo desses arquivos excede max_wal_size, ou 
o tempo desde o último ponto de verificação excede checkpoint_timeout, 
os arquivos de dados são modificados para refletir as mudanças.
Administração do SGBD PostgreSQL
39
Contudo, essa operação envolve grandes quantidades de entrada/
saída e várias operações de leitura/escrita em disco. Para realizar tal 
procedimento, os usuários podem emitir CHECKPOINT sempre que 
houver necessidade de automatizar o sistema a partir dos parâmetros 
checkpoint_timeout e checkpoint_completion_target do PostgreSQL.O parâmetro checkpoint_timeout é usado para definir o tempo 
entre os pontos de verificação WAL. Definir um valor muito baixo diminui o 
tempo de recuperação de falha, pois mais dados são gravados no disco, 
mas também prejudica o desempenho, pois cada ponto de verificação 
acaba consumindo recursos valiosos do sistema. 
O checkpoint_completion_target é a fração de tempo entre os 
pontos de verificação para a conclusão do ponto de verificação. Uma alta 
frequência de pontos de verificação pode afetar o desempenho. Para um 
ponto de verificação suave, checkpoint_timeout deve ser um valor baixo. 
Caso contrário, o sistema operacional acumulará todas as páginas sujas até 
que a proporção seja atingida e, em seguida, fará uma grande descarga.
SAIBA MAIS:
Assunto maravilhoso, não é mesmo? Ficou curioso para 
conhecer mais? A documentação do PostgreSQL oferece 
ótimos recursos pelo link: https://bit.ly/31b6x1g
RESUMINDO:
Chegamos ao fim do nosso capítulo. Gostou do que 
mostramos? Aprendeu mesmo tudinho? Agora, só para 
termos certeza de que você realmente entendeu o tema 
de estudo deste capítulo, vamos resumir tudo. Você deve 
ter aprendido os conceitos essenciais de buffering e de 
sincronização em um servidor PostgreSQL, bem como a 
importância e os exemplos. Apresentamos a você como 
configurar o shared_buffer e como implementar o controle 
transacional dos dados com comandos como commit, 
checkpoint etc. Não esquecendo que também aprendemos 
a executar e desativar a replicação síncrona.
Administração do SGBD PostgreSQL
https://bit.ly/31b6x1g
40
Procedimento de Fallback
INTRODUÇÃO:
Agora que você já sabe tudo sobre buffering e 
sincronização, vamos para o próximo passo. Ao término 
deste capítulo você conhecerá os principais componentes 
do PostgreSQL. Além disso, irá compreender o processo de 
log de transações, aplicando comandos de recuperação de 
dados por meio de fallbacks. Você sabia que o PostgreSQL 
tem mais de duzentas configurações que controlam o 
comportamento do banco de dados? Está tudo registrado 
em pg_settings. Ainda assim, é extremamente importante 
para o profissional administrador do banco de dados 
compreender o processo de log de transações, pois é 
ele quem garante a durabilidade dos dados, isto é, um 
menor risco de perder os dados. Você também já sabe 
da importância dos dados, não é mesmo? Então, vamos 
conhecer mais sobre esse assunto fantástico!.
Você já ouviu falar em log de transações? Sabe para que serve? 
Todos os Sistemas de Gerenciamento de Banco de Dados Relacional 
usam logs de transação que mudam de codinome conforme o SGBD. No 
PostgreSQL, chamamos de WAL (Write-Ahead Log). 
Os logs de transação possuem um trade-off entre vantagem e 
desvantagem, cuja problemática baseia-se no gargalo de desempenho 
do Sistema de Gerenciamento de Banco de Dados.
Os logs de transação trabalham de forma incremental, mas não 
indefinidamente, pois, quando atinge seu tamanho limite, é aberto um 
novo arquivo para o registro dos logs.
Um fallback é uma operação de contingência, isto é, caso ocorra 
algum problema com os dados, alguns procedimentos são usados 
automaticamente para assegurar a manutenção adequada do servidor, 
garantindo sua integridade e oferecendo suporte a algumas operações, 
tais como: recuperação de transações individuais, recuperação de 
Administração do SGBD PostgreSQL
41
transações incompletas, suporte à replicação transacional, suporte à 
recuperação de desastre etc. Sendo assim, vejamos alguns comandos 
para a recuperação de dados nas subseções seguintes.
Point in Time Recovery (PITR) no 
PostgreSQL
DEFINIÇÃO:
O Point in Time Recovery permite, além da recuperação 
dos dados em situações de falhas, voltar a um determinado 
ponto no tempo, além de possibilitar a remoção de uma 
tabela.
A documentação do grupo PostgreSQL afirma que, em todos 
os momentos, o PostgreSQL mantém o WAL - Registro de Gravação 
Antecipada (do inglês Write-Ahead Log) no subdiretório pg_xlog do 
diretório de dados do cluster, cujo log registra todas as alterações 
realizadas nos arquivos de dados do banco de dados. 
Dessa forma, se a recuperação for necessária, será possível restaurar 
o backup do sistema de arquivos e, em seguida, reproduzir os arquivos 
WAL de backup para trazer o sistema a um estado atual e, ainda, poderá 
dar suporte à restauração de um cluster de banco de dados inteiro, não 
só de um subconjunto.
Administração do SGBD PostgreSQL
42
Passo a passo: Os arquivos WAL, por padrão, ocupam 16 MB. Sendo 
assim, vejamos um passo a passo de uma transferência para um diretório.
1. Inicialmente, vamos montar um cluster por meio do initdb em um 
diretório vazio. Vejamos o comando:
2. Agora, no arquivo postgresql.conf, devemos alterar a variável archive_
mode para on. Vejamos:
archive mode = on
3. Posteriormente, devemos configurar a variável chamada archive_
command que apontará para onde os arquivos WAL serão 
direcionados. Observe que o símbolo %p representa o arquivo de 
origem sem a exigência do caminho específico; já %f é o arquivo de 
origem precedido. 
archive_command = ‘rsync %p diretorio_destino/%f’
NOTA:
De regra geral, para ambientes em modo produção, 
aconselha-se o armazenamento dos arquivos de log em 
hardware separado de onde os arquivos são gerados.
4. Nesse momento, vamos alterar a estrutura do arquivo WAL:
wal_level = archive
5. Então, para garantir as aplicações, reiniciaremos o servidor:
Administração do SGBD PostgreSQL
43
postgres =# /usr/lib/postgresql/12/bin/pg_ctl -D teste -l teste/teste.
log restart
6. Para os testes, iremos gerar uma tabela com números sequenciais:
postgres =# psql
teste=# CREATE TABLE tbl_teste AS SELECT * FROM generate_series 
(1, 1000000);
7. Nosso próximo importante passo é a ativação do PITR. Para isso, 
é necessário habilitar no arquivo que já conhecemos: pg_hba.
conf. Então, vamos habilitar para aceitar as conexões iniciadas pelo 
endereço IP 192.168.0.N, em que N representa as demais combinações 
de endereço, e também para o localhost.
8. Finalizada a configuração, agora carregamos as modificações no psql.
postgres =# psql
teste=# SELECT pg_reload_conf ();
9. O próximo passo será a execução do backup. Note na linha de 
comando que <dir_backup> aponta onde os dados serão salvos. O 
diretório escolhido para esse exemplo foi backup. Veja também que o 
<host> significa o endereço a ser estabelecido pelo pg_basebackup.
postgres =# /usr/lib/postgresql/12/bin/pg_basebackup -D 
<diretorio_backup> -h <host>
Administração do SGBD PostgreSQL
44
10. Agora, o comando será para o processo de recuperação do backup. 
No PostgreSQL tal procedimento é realizado no arquivo recovery.conf 
em que, na inicialização, o modo de espera inicia restaurando todos os 
WAL disponíveis no local do arquivo, chamando restore_command, e 
recovery_target_time para indicar a data e a hora dos dados a serem 
recuperados.
IMPORTANTE:
A localização do recovery.conf deve ser no diretório principal 
do backup. Como já falamos, nosso diretório escolhido foi 
nomeado backup.
EXPLICANDO MELHOR:
Uma vez que atinge o final do WAL disponível e o 
restore_command falha, ele tenta restaurar qualquer WAL 
disponível no diretório pg_xlog. Se isso falhar, e a replicação 
de streaming tiver sido configurada, o standby tenta se 
conectar ao servidor primário e iniciar o streaming do WAL 
a partir do último registro válido encontrado no arquivo ou 
pg_xlog. Se isso falhar ou a replicação de streaming não 
estiver configurada, ou se a conexão for desconectada 
posteriormente, o modo de espera volta para a etapa inicial 
e tenta restaurar o arquivo do archive novamente. Este 
loop de novas tentativas do arquivo pg_xlog e por meio 
da replicação de streaming continua até que o servidor 
seja interrompido ou que o failover seja disparado por um 
arquivo acionador.
Administração do SGBD PostgreSQL
45
11. É conveniente realizar a limpeza dos logs de transação após aconsumação pelo backup por meio do parâmetro chamado archive_
cleanup_command.
12. Devemos notar que é necessário alterar as permissões de leitura, de 
escrita e de execução para o diretório que contém o backup. Senão, 
o PostgreSQL emitirá um erro.
13. Apesar de não haver necessidade em caso real, como estamos 
realizando um teste na mesma máquina, é preciso que a porta padrão 
(5432) do postgres seja diferente para não ocasionar conflito. Sendo 
assim, vamos configurar para 5433 no arquivo postgresql.conf.
14. Pronto! Agora será o nosso comando final para realizar o procedimento 
de recuperação a partir de todos os arquivos WAL, armazenando em 
backup/backup.log.
Administração do SGBD PostgreSQL
46
Replicação Física dos Dados do PostgreSQL
DEFINIÇÃO:
O processo de transferência de entradas de log de 
transações e a aplicação delas em outro servidor é 
chamado de replicação física. É chamado de físico porque 
a recuperação do log de transações funciona no nível 
dos arquivos de dados, e a réplica do banco de dados 
no servidor em espera será uma cópia exata de bytes do 
banco de dados mestre.
Também conhecido como backup off line, a replicação física torna-
se essencial tratando-se de recuperação de desastres. Contudo, exige 
bastante atenção, pois é uma recuperação demorada.
As entradas do log de transações podem ser obtidas de um servidor 
de banco de dados, o servidor mestre, e aplicadas aos arquivos de dados 
em outro servidor, o servidor em espera. Nesse caso, o servidor em espera 
terá a réplica exata do banco de dados do servidor mestre.
A replicação física funciona para todo o cluster de banco de 
dados, e quando um novo banco de dados é criado, é refletido no log de 
transações e, portanto, replicado para o servidor em espera. O servidor 
em espera pode ser configurado para permitir consultas somente leitura; 
nesse caso, seria denominado hot standby.
Passo a passo: Uma das maneiras de configurar a replicação física 
é enviar constantemente novos arquivos WAL do servidor mestre para o 
standby e aplicá-los lá para obter a cópia sincronizada do banco de dados. 
Esse cenário é denominado envio de log. Sendo assim, para configurar 
o envio de log, algumas ações devem ser tomadas. Vejamos o passo a 
passo:
No servidor mestre, faça o seguinte:
1. Certifique-se de que os arquivos WAL tenham informações suficientes 
para replicação. No arquivo postgresql.conf, é necessário definir o 
parâmetro de configuração wal_level do tipo replica ou lógico.
Administração do SGBD PostgreSQL
47
2. Habilite o arquivamento dos arquivos WAL configurando o parâmetro 
archive_mode de configuração ativado.
3. Realize o arquivamento dos arquivos WAL em um local seguro 
especificado usando o parâmetro de configuração archive_command. 
O PostgreSQL aplicará esse comando do sistema operacional a cada 
arquivo WAL que precisa ser arquivado. Esse comando pode, por 
exemplo, compactar o arquivo e copiá-lo para uma unidade de rede. 
Se o comando estiver vazio, mas o arquivamento de arquivos WAL 
estiver habilitado, esses arquivos serão acumulados na pasta pg_wal.
No servidor em espera, faça o seguinte:
1. Restaure o backup básico obtido do servidor mestre. A maneira mais 
fácil de fazer isso é usar a ferramenta pg_basebackup. O comando 
executado na máquina em espera pode ter a seguinte aparência:
postgres =# pg_pasebackup -D / var / lib / postgresql / 12 / main -h 
master -U postgres
Há outro cenário de replicação física que pode funcionar além do 
envio de log ou sem envio de log: replicação de streaming. A replicação de 
streaming implica uma conexão entre os servidores em espera e mestre. 
O mestre enviaria todas as entradas do log de transações diretamente 
para o modo de espera. Ao fazer isso, o modo de espera terá todas as 
alterações recentes sem esperar que os arquivos WAL sejam arquivados.
SAIBA MAIS:
Quer saber mais sobre o assunto? Deseja mais detalhes 
sobre o comando? Na documentação do PostgreSQL, 
é possível acessar o comando em detalhes: https://bit.
ly/3lUA9bh
Administração do SGBD PostgreSQL
https://bit.ly/3lUA9bh
https://bit.ly/3lUA9bh
48
RESUMINDO:
Chegamos ao fim do nosso capítulo. Gostou do que 
mostramos? Aprendeu mesmo tudinho? Agora, só 
para termos certeza de que você realmente entendeu 
o tema de estudo deste capítulo, vamos resumir tudo. 
Nesse material, você deve ter aprendido a realizar 
os procedimentos de fallbacks aplicando comandos 
de recuperação de dados em log de transações. Viu 
também um exemplo prático de como realizar um 
PITR e uma replicação física dos dados no PostgreSQL. 
Agora já sabe que é possível restaurar o backup do sistema 
de arquivos e, em seguida, reproduzir os arquivos WAL de 
backup para trazer o sistema a um estado atual e, ainda, 
poder dar suporte à restauração de um cluster de banco de 
dados inteiro, não só de um subconjunto.
Administração do SGBD PostgreSQL
49
REFERÊNCIAS
JUBA, Salahaldin; VOLKOV, Andrey. Learning PostgreSQL 11: a beginner’s 
guide to building high-performance PostgreSQL database solutions. Packt 
Publishing Ltd, 2019.
THOMAS, Shaun.  PostgreSQL 12 High Availability Cookbook: Over 100 
recipes to design a highly available server with the advanced features of 
PostgreSQL 12. Packt Publishing Ltd, 2020.
BRASIL, André. Como alterar a senha de uma base de dados. Kinghost, 
2020. Disponível em: https://king.host/wiki/artigo/alterar-senha-de-
uma-base-de-dados/. Acesso em: 11 set. 2020.
LIMBIT. The DRBD User’s Guide. Disponível em: https://www.linbit.com/
drbd-user-guide/users-guide-drbd-8-4/. Acesso em: 02 set. 2020.
POSTGRESQL. Documentação. Disponível em: <https://www.postgresql.
org/docs/current/runtime-config-wal.html>. Acesso em: 08 set. 2020.
Administração do SGBD PostgreSQL
Administração do 
SGBD PostgreSQL
Camila Freitas Sarmento
	Conexão do PostgreSQL a Aplicações
	Conectando ao PostgreSQL Remotamente
	Conectando ao Banco de dados PostgreSQL no Windows
	Conectando ao Banco de Dados PostgreSQL no Linux
	Conectando ao Banco de Dados PostgreSQL via PgAdmin
	Componentes do PostgreSQL
	Componentes de Acesso a Dados do PostgreSQL
	Componentes do Banco de Dados do PostgreSQL
	Schemas
	Tabelas
	Componentes do Sistema de Arquivos do PostgreSQL
	DRBD
	LVM
	XFS
	Buffering e Sincronização
	PostgreSQL Buffer
	Sincronização
	Procedimento de Fallback
	Point in Time Recovery (PITR) no PostgreSQL
	Replicação Física dos Dados do PostgreSQL

Continue navegando