PostgreSQL 16 marca uma atualização significativa no mundo dos sistemas de gerenciamento de banco de dados. Lançado oficialmente em 14 de setembro de 2023, o PostgreSQL 16 apresenta muitos novos recursos e melhorias, fortalecendo sua posição como uma solução de banco de dados robusta e versátil para usuários, administradores e desenvolvedores.
Abaixo estão alguns dos principais destaques dos recursos do PostgreSQL 16:
- Aprimoramentos de paralelização: O PostgreSQL 16 permite a paralelização de junções de hash FULL e internas direitas OUTER, melhorando significativamente o desempenho da consulta.
- Melhorias na replicação: introduz a capacidade de replicação lógica de servidores em espera e permite que os assinantes apliquem grandes transações em paralelo.
- Capacidades de monitoramento: adicionar a visualização pg_stat_io permite um monitoramento mais aprofundado das estatísticas de E/S.
- Suporte SQL/JSON: esta versão apresenta construtores SQL/JSON e funções de identidade, ampliando seus recursos de manipulação de dados.
- Desempenho de congelamento a vácuo: O PostgreSQL 16 melhora o desempenho do congelamento a vácuo, auxiliando na manutenção eficiente do banco de dados.
- Correspondência de Expressões Regulares: A correspondência de expressões regulares para nomes de usuários e bancos de dados em pg_hba.conf e nomes de usuários em pg_ident.conf aumenta a segurança e a flexibilidade.
Agora, vamos prosseguir com as instruções técnicas e nos aprofundar no processo de instalação do PostgreSQL 16.
Pré-requisitos para instalação do PostgreSQL 16
Para instalar com êxito o PostgreSQL 16 no Ubuntu, certifique-se de atender aos seguintes requisitos:
Hardware recomendado e versões suportadas do Ubuntu
Componente | Requerimento |
---|---|
Processador | Processador compatível de 1 gigahertz (GHz) ou mais rápido |
BATER | 2 GB ou mais |
Espaço em disco | 512 MB de HDD (espaço em disco adicional necessário para dados ou componentes de suporte) |
Versões suportadas | Ubuntu 24.04 (nobre), Ubuntu 22.04 (Jammy), Ubuntu 20.04 (Focal) |
Requisitos adicionais
Requerimento | Descrição |
---|---|
Conexão de internet | Necessário para baixar o PostgreSQL 16 e atualizações futuras. |
Convenções Terminais | Todos os comandos do terminal devem ser executados como um usuário normal com sudo privilégios. |
Comandos CLI | Use a interface de linha de comando (CLI) para instalação e configuração. |
Importar repositório PostgreSQL APT
Atualize o Ubuntu antes da instalação do PostgreSQL 16
Comece garantindo que seu sistema Ubuntu esteja atualizado. Esta etapa é crucial para manter a estabilidade e compatibilidade do sistema:
sudo apt update
Em seguida, atualize todos os pacotes que estão desatualizados:
sudo apt upgrade
Instale pacotes iniciais para PostgreSQL 16
Para auxiliar na instalação do software de banco de dados, instale os seguintes pacotes:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
Adicionar repositório PostgreSQL 16 APT
Primeiro, importe a chave GPG do PostgreSQL. Trata-se de garantir que os pacotes que você está prestes a instalar sejam genuínos e não adulterados:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
Escolhendo o repositório PostgreSQL 16 correto
Agora é hora de selecionar o repositório PostgreSQL 16 apropriado para suas necessidades.
Repositório Estável para Produção/Uso Geral
O repositório estável é a escolha certa para a maioria dos usuários, especialmente em um ambiente de produção. É atualizado regularmente com versões estáveis e seguras:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
Repositórios de instantâneos ou testes para desenvolvedores
Considere o instantâneo ou os repositórios de teste se você estiver na fase de desenvolvimento ou teste. Lembre-se, entretanto, de que estes não são para uso em produção devido à sua natureza menos estável.
Repositório de snapshots para testes de ponta
Obtenha os instantâneos mais recentes aqui:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-snapshot main | sudo tee /etc/apt/sources.list.d/postgresql.list
Repositório de teste para os recursos mais recentes
Para testar os recursos mais recentes, este comando irá configurar você:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main | sudo tee /etc/apt/sources.list.d/postgresql.list
Instale o PostgreSQL 16 por meio de comandos de terminal
Atualizar lista de fontes de índice de pacotes APT
Depois de adicionar o repositório PostgreSQL estável ou de teste, é importante atualizar a lista de fontes do repositório. Esta ação garante que seu sistema reconheça o repositório PostgreSQL recém-adicionado:
sudo apt update
Instale o PostgreSQL 16 via comando APT
Agora, vamos prosseguir para a instalação do PostgreSQL 16. Este comando instala o cliente e o servidor PostgreSQL:
sudo apt install postgresql-client-16 postgresql-16
Verificando a instalação do PostgreSQL
Assim que a instalação for concluída, é crucial confirmar se o PostgreSQL está instalado e funcionando corretamente. Este comando verifica o status do serviço PostgreSQL:
systemctl status postgresql
Ativando PostgreSQL 16
Se o PostgreSQL não estiver ativo, use este comando para iniciar o serviço PostgreSQL. Isso também garante que o PostgreSQL seja iniciado automaticamente com o seu sistema:
sudo systemctl enable postgresql --now
Gerenciando o serviço PostgreSQL 16
Parando o servidor PostgreSQL 16
Para interromper temporariamente o serviço PostgreSQL, talvez para manutenção ou alterações de configuração, use este comando:
sudo systemctl stop postgresql
Iniciando o servidor PostgreSQL 16
Quando você estiver pronto para iniciar o serviço PostgreSQL, especialmente após uma parada ou instalação inicial, este comando será útil:
sudo systemctl start postgresql
Reiniciando o servidor PostgreSQL 16
Em cenários em que você alterou configurações ou atualizações, muitas vezes é necessário reiniciar. Este comando reinicia o serviço PostgreSQL, aplicando quaisquer novas alterações:
sudo systemctl restart postgresql
Recarregando o servidor PostgreSQL 16
Para recarregar o serviço PostgreSQL sem interromper sua operação, use este comando. É útil quando você precisa aplicar pequenas alterações na configuração:
sudo systemctl reload postgresql
Verificando o status do PostgreSQL 16
Para verificar o status operacional do serviço PostgreSQL, incluindo se ele está ativo e funcionando sem problemas, use:
systemctl status postgresql
Habilitando PostgreSQL 16 na inicialização do sistema
Se o PostgreSQL não estiver configurado para iniciar automaticamente, este comando irá habilitá-lo, garantindo que ele esteja ativo imediatamente e nas inicializações subsequentes do sistema:
sudo systemctl enable postgresql --now
Comandos de exemplo básicos com PostgreSQL 16
Acessando a conta de usuário Postgres
No PostgreSQL, o usuário 'postgres' é uma função de superusuário padrão. Esta conta é fundamental para a execução de comandos administrativos. Para mudar para esta conta, use:
sudo -i -u postgres
Uma vez na conta, entre na interface de linha de comando do PostgreSQL:
psql
O prompt postgres=#
confirma sua conexão com o ambiente PostgreSQL. Para sair, basta digitar exit
.
Acesso rápido ao PostgreSQL sem troca de usuário
Para operações rápidas sem alterar a conta do usuário, acesse diretamente o PostgreSQL:
sudo -u postgres psql
Este comando economiza tempo para tarefas rotineiras. Para sair desta interface, digite exit
.
Criando uma nova função de usuário PostgreSQL
A flexibilidade do PostgreSQL permite que superusuários criem funções de usuário. Para estabelecer uma nova função de usuário, emita este comando:
sudo su - postgres -c "createuser <username>"
Substituir <username>
com o nome de usuário desejado.
Iniciando um novo banco de dados PostgreSQL
Para configurar um novo banco de dados para seu usuário:
sudo su - postgres -c "createdb <database_name>"
Substituir <database_name>
com o nome pretendido para seu banco de dados.
Atribuindo privilégios de usuário a um banco de dados
Atribua acesso ao banco de dados com segurança:
sudo -u postgres psql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
Substituto <database_name>
e <username>
como requerido. Conclua digitando exit
.
Configurar o Firewall UFW para PostgreSQL 16
Instalando e ativando o firewall UFW
Certifique-se de que o UFW (Firewall Descomplicado) esteja instalado e ativado em seu sistema. O UFW simplifica o gerenciamento do firewall e é essencial para proteger o tráfego de rede:
sudo apt install ufw
sudo ufw enable
Configurando regras UFW para PostgreSQL 16
O PostgreSQL se comunica na porta 5432 por padrão. É necessário configurar o UFW para permitir o tráfego nesta porta, principalmente ao conectar-se de locais remotos.
Permitindo acesso à sub-rede
Para permitir o acesso a um intervalo de endereços IP dentro de uma sub-rede, use este comando:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Substituir 192.168.1.0/24
com seu intervalo de sub-rede específico.
Permitindo acesso IP individual
Para conceder acesso ao PostgreSQL a partir de um único endereço IP, use:
sudo ufw allow proto tcp from 192.168.1.0 to any port 5432
Modificar 192.168.1.0
para o endereço IP que você deseja permitir.
Estes são apenas exemplos básicos. Você deve considerar bloquear qualquer banco de dados público, tanto quanto possível, a longo prazo.
Configurar PostgreSQL 16
Habilite o acesso remoto no PostgreSQL 16
Configurar o PostgreSQL para aceitar conexões remotas envolve ajustar o endereço de escuta da interface local padrão.
Modificando a configuração para acesso remoto
Acesse o arquivo de configuração do PostgreSQL:
sudo nano /etc/postgresql/16/main/postgresql.conf
Na seção “Configurações de conexão”, altere listen_addresses = 'localhost'
às suas necessidades específicas:
- Substitua 'localhost' pelo endereço IP desejado para um único IP.
- Para permitir conexões em todas as interfaces, use
listen_addresses = '*'
.
Após fazer as alterações, salve com CTRL+O e saia com CTRL+X. Em seguida, reinicie o PostgreSQL:
sudo systemctl restart postgresql
Verifique as alterações com:
ss -nlt | grep 5432
Na saída, você deverá ver a porta 5432 ativa.
Configurando pg_hba.conf para segurança aprimorada
Edite o pg_hba.conf
arquivo para controle de acesso ajustado:
sudo nano /etc/postgresql/16/main/pg_hba.conf
Personalizando o acesso de usuários e bancos de dados
Em pg_hba.conf
, você pode especificar quais usuários e bancos de dados podem se conectar e de quais endereços. Aqui estão algumas configurações comuns:
- Acesso específico do usuário: substitua 'todos' por um nome de usuário específico para restringir o acesso apenas a esse usuário.
- Acesso específico ao banco de dados: especifique um banco de dados específico em vez de permitir acesso a todos os bancos de dados.
- Restrições de endereço: Defina endereços IP ou intervalos específicos (por exemplo,
192.168.1.0/24
) para limitar onde as conexões podem se originar.
Escolhendo métodos de autenticação
PostgreSQL oferece suporte a vários métodos de autenticação:
- MD5: Requer uma senha e a criptografa com MD5.
- Senha: usa senhas de texto simples (menos seguras, não recomendadas para produção).
- Par: depende da identidade do usuário no nível do sistema operacional (comum para conexões locais).
- Identidade: semelhante a 'peer', normalmente usado para conexões de rede.
- SCRAM-SHA-256: Um método mais seguro, recomendado em vez de MD5 ou senha.
Ajustando o desempenho em postgresql.conf
Para otimização de desempenho, considere estas configurações em postgresql.conf
:
- buffers_compartilhados: ajusta a quantidade de memória que o PostgreSQL usa para buffers de memória compartilhada.
- trabalho_mem: define a memória usada para operações internas de classificação e hash.
- max_connections: controla o número máximo de conexões simultâneas com o banco de dados.
Monitoramento e Diagnóstico
Ative o registro detalhado para obter insights sobre problemas e desempenho do banco de dados:
- log_statement: defina como 'all' para registrar todas as instruções SQL executadas.
- duração_log: quando ativado, registra a duração de cada instrução SQL concluída.
Conclusão
Acabamos de percorrer um guia completo para configurar o PostgreSQL 16 no Ubuntu, cobrindo tudo, desde a instalação e configuração do acesso remoto até o reforço da segurança com regras de firewall. Lembre-se, embora seja ótimo ter o PostgreSQL instalado e funcionando, a verdadeira chave está na manutenção regular e nas verificações de segurança.
Links Úteis
Aqui estão alguns links úteis relacionados à instalação do PostgreSQL 16 no Ubuntu Linux:
- Notas de versão do PostgreSQL 16: leia as notas de versão do PostgreSQL 16 para saber mais sobre novos recursos, melhorias e correções de bugs.
- Repositório PostgreSQL GitHub: Visite o repositório GitHub oficial do PostgreSQL para acessar o código-fonte, relatar problemas e contribuir com o desenvolvimento.
- Documentação PostgreSQL: acesse a documentação abrangente do PostgreSQL para obter guias detalhados de instalação, configuração e uso.
- Comunidade PostgreSQL: Participe da comunidade PostgreSQL para se conectar com outros usuários, participar de discussões e obter suporte.