Histórico da Página
...
Este documento tem como objetivo auxiliar analistas na instalação e configuração básica do banco de dados PostgreSQL em ambientes locais , de desenvolvimento e /ou teste, em sistemas operacionais Linux. A instalação e configuração em ambientes de produção não é o foco deste documento.em Sistemas Operacionais Linux, e pode ser utilizado em um ambiente de produção como referência e apoio ao DBA.
| Informações | ||
|---|---|---|
| ||
Para melhor aproveitamento do conteúdo das páginas relacionadas, recomendamos:
| ||
| Informações | ||
Os links a seguir possuem conteúdos relevantes ao material apresentado nestas páginas: Wiki Guia para Report de Problemas • Ferramentas para o PostgreSQL • Documentação do pgdump • Link para PGTune • Link para documentação DBAccess • Home - PostgreSQL • Documentação initdb - criando um cluster do PostgreSQL |
Nas páginas abaixo, é demonstrada a instalação do PostgreSQL 16 em sistema operacional RedHat Enterprise Linux release 9.6 - x86_64.
| Aviso | ||
|---|---|---|
| ||
Em ambientes de produção, o ideal é ter um DBA para apoiar na instalação e configuração, por conta de configurações específicas de cenário e tuning no banco de dados. |
| Nota | ||
|---|---|---|
| ||
O sistema operacional utilizado como base para esta página foi o Red Hat Enterprise Linux release 8.3 - x86_64. Os comandos aqui apresentados são referentes ao Red Hat 8. |
Instalando o PostgreSQL
Para baixar e instalar o PostgreSQL, execute os comandos abaixo. Atenção: estes comandos são referentes ao sistema operacional Red Hat 8.
| Bloco de código |
|---|
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf module disable postgresql
sudo dnf install -y postgresql12-server postgresql-contrib |
| Informações | ||
|---|---|---|
| ||
Você pode alterar a versão e verificar o comando para instalação em outras versões. Postgresql-RedHat |
Criação do Cluster PostgreSQL
...
banco de dados. |
...
| Bloco de código |
|---|
/usr/pgsql-12/bin/postgresql-12-setup initdb |
Posterior à criação do Cluster, vamos colocar na inicialização do Sistema Operacional:
| Bloco de código |
|---|
systemctl enable postgresql-12 |
E iniciar:
| Bloco de código |
|---|
systemctl start postgresql-12 |
Pode-se verificar o status da seguinte forma:
| Bloco de código |
|---|
systemctl status postgresql-12 |
Configuração para boa performance
Com o Cluster instalado e iniciado, é possível realizar a configuração mínima para boa performance do banco de dados com o ERP Protheus.
| Informações | ||
|---|---|---|
| ||
Foi utilizado, neste documento, a ferramenta PGConfig. Esta ferramenta é desenvolvida e mantida pela comunidade Open Source do PostgreSQL. Outra ferramenta amplamente utilizada é o PGTune. |
Neste exemplo, os seguintes parâmetros foram alterados:
...
Operating System = GNU/Linux Based
Application Profile= ERP or Long Transaction Applications
Architecture= 64 Bits (x86-64)
PostgreSQL Version= 12
Storage Type= SSD Storage
Number of CPUs= 4 (De acordo com o Servidor do Banco de Dados)
Total Memory (GB)= 16 (De acordo com o Servidor do Banco de Dados)
Max Connections= 100 (Com dicionário no Banco de Dados coloque, no mínimo, o dobro de conexões do ERP)
Data Storage = SSD Storage (De acordo com o Servidor do Banco de Dados)
Após alterar todos os valores necessários, as recomendações para a configuração do banco de dados logo abaixo.
| Aviso | ||
|---|---|---|
| ||
Estes ajustes são referentes ao sizing do servidor de exemplo, e os valores aqui retratados NÃO devem ser utilizados como base para seu ambiente de produção. O único valor que será utilizado para o Protheus é o Application Profile = ERP or Long Transaction Applications. |
Do lado direito (Profile Comparison), será demonstrado os valores recomendados na coluna OLTP:
Caso você prefira entender cada parâmetro de forma mais detalhada, você pode clicar no mesmo que irá expandir um explicação básica e o link da documentação PostgreSQL com maiores detalhes:
A segunda possibilidade é “Export Config” do lado direito onde você em duas opções de formato para configuração:
- “UNIX-Like config file”, onde você possui a configuração indicada para o arquivo postgresql.conf de acordo com o hardware indicado acima:
- “ALTER SYSTEM commands”, onde podemos coletar os comandos para alteração diretamente na instância:
Ambas as maneiras trarão o mesmo resultado.
É possível executar os comandos ALTER SYSTEM pelo PGAdmin ou por linha de comando, pelo psql.
No pgAdmin, clique com o botão direito sobre sua database, clique em Query Tool e cole o conteúdo. Após isto, clique em Executar ou aperte F5:
Por linha de comando, no psql, cole as linhas de configuração.
| Aviso | ||
|---|---|---|
| ||
Estes ajustes são referentes ao sizing do servidor de exemplo, e os valores aqui retratados NÃO devem ser utilizados como base para seu ambiente de produção. O único valor que será utilizado para o Protheus é o Application Profile = ERP. |
Com um limite de 200 a 300 conexões no Protheus, o Linux default pode atender à demanda, mas é importante que o postgreSQL também esteja em Linux. Em determinados casos, é importante efetuar ajustes no sistema operacional para garantir uma boa performance do cenário.
Ao aplicar as alterações, seja pelo pgAdmin ou psql, você pode verificar as alterações que foram realizadas no arquivo:
/var/lib/pgsql/12/data/postgresql.auto.conf
Esse arquivo não pode ser alterado. Mas caso queira alterar manualmente o arquivo de configuração, realize a alteração do arquivo: /var/lib/pgsql/12/data/postgresql.conf.
Lembre-se de reiniciar a instância após a alteração para que todos os parâmetros sejam aplicados.
- Criação de Usuário e Base de Dados para o ERP Protheus;
Após realizar a alteração ou no arquivo postgresql.conf ou com linha de comando para melhor performance, podemos prosseguir com a criação do banco de dados.
Neste exemplo, vamos criar os usuários ‘tpprd’, ‘tphml’ e ‘tpdev’ com a senha igual ao usuário no Cluster PostgreSQL. Mas atenção: por questões de segurança, não adote esta prática em seu ambiente de produção.
Você pode escolher outro nome e senha para a criação, esse padrão que utilizamos segue a seguinte definição e indicações de nomenclatura:
...
Acesse o linux, e entre com a usuário criado automaticamente na instalação do PostgreSQL:
| Bloco de código |
|---|
su - postgresql |
Certifique-se que este usuário tem acesso a pasta para criação dos datafiles do banco de dados.
Diretamente no Sistema Operacional com a ferramenta psql:
- Create User
| Bloco de código |
|---|
psql -c "CREATE USER tpprd WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpprd'"
psql -c "CREATE USER tphml WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tphml'"
psql -c "CREATE USER tpdev WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpdev'" |
Ou com a ferramenta pgAdmin:
| Bloco de código |
|---|
CREATE USER tpprd WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpprd'
CREATE USER tphml WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tphml'
CREATE USER tpdev WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpdev' |
Pode-se verificar a criação do usuário no PgAdmin no “Login/Group Roles”
Ou com a seguinte query:
| Bloco de código |
|---|
SELECT usename FROM pg_user; |
Após a criação do usuário, crie os tablespaces e dê permissão ao usuário criado.
| Informações | ||
|---|---|---|
| ||
O Path utilizado (/pgdata) foi criado no sistema operacional e é exclusivo para os datafiles Protheus. Você pode especificar um path diferente, caso haja. |
- Permissão para usuário Postgre
chown -R postgres:postgres /pgdata/
- Criação de Path para Datafiles
| Bloco de código |
|---|
su - postgres
cd /pgdata
mkdir tpprd/data
mkdir tpprd/index
mkdir tphml/data
mkdir tphml/index
mkdir tpdev/data
mkdir tpdev/index |
- Tablespace para Dados
Diretamente no Sistema Operacional com a ferramenta psql:
| Bloco de código |
|---|
su - postgres |
#(Ambiente Produção)
| Bloco de código |
|---|
psql -c "CREATE TABLESPACE tpprd_data OWNER tpprd LOCATION '/pgdata/tpprd/data'";
psql -c "CREATE TABLESPACE tpprd_index OWNER tpprd LOCATION '/pgdata/tpprd/index'"; |
#(Ambiente Homologação)
| Bloco de código |
|---|
psql -c "CREATE TABLESPACE tphml_data OWNER tphml LOCATION '/pgdata/tphml/data'";
psql -c "CREATE TABLESPACE tphml_index OWNER tphml LOCATION '/pgdata/tphml/index'"; |
#(Ambiente Desenvolvimento)
| Bloco de código |
|---|
psql -c "CREATE TABLESPACE tpdev_data OWNER tpdev LOCATION '/pgdata/tpdev/data'";
psql -c "CREATE TABLESPACE tpdev_index OWNER tpdev LOCATION '/pgdata/tpdev/index'"; |
Ou com a ferramenta pgAdmin:
| Bloco de código |
|---|
CREATE TABLESPACE tpprd_data OWNER tpprd LOCATION '/pgdata/tpprd/data';
CREATE TABLESPACE tpprd_index OWNER tpprd LOCATION '/pgdata/tpprd/index';
CREATE TABLESPACE tphml_data OWNER tphml LOCATION '/pgdata/tphml/data';
CREATE TABLESPACE tphml_index OWNER tphml LOCATION '/pgdata/tphml/index';
CREATE TABLESPACE tpdev_data OWNER tpdev LOCATION '/pgdata/tpdev/data';
CREATE TABLESPACE tpdev_index OWNER tpdev LOCATION '/pgdata/tpdev/index'; |
| Informações | ||
|---|---|---|
| ||
| Para ambientes que utilizam serviços da AWS (RDS) não tem necessidade de criar tablespace. |
No pgAdmin podemos visualizar os tablespaces criados:
Ou com a seguinte query:
SELECT spcname FROM pg_tablespace;
Agora vamos para criação dos bancos de dados vinculando aos schemas "tpprd", "tphml" e "tpdev" criados anteriormente:
No pgAdmin podemos visualizar os tablespaces criados:
Ou com a query:
| Bloco de código |
|---|
SELECT spcname FROM pg_tablespace; |
...
Agora vamos para criação dos bancos de dados vinculando aos Schema “tpprd”, “tphml” e “tpdev” criados anteriormentes:
- Create Database
Diretamente no Sistema Operacional com a ferramenta psql:
su - postgres
psql -c "CREATE DATABASE tpprd with OWNER = tpprd TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpprd_data CONNECTION LIMIT = -1;";
psql -c "CREATE DATABASE tphml with OWNER = tphml TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tphml_data CONNECTION LIMIT = -1;";
psql -c "CREATE DATABASE tpdev with OWNER = tpdev TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpdev_data CONNECTION LIMIT = -1;";
Ou com a ferramenta pgAdmin:
CREATE DATABASE tpprd with OWNER = tpprd TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpprd_data CONNECTION LIMIT = -1;;
CREATE DATABASE tphml with OWNER = tphml TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tphml_data CONNECTION LIMIT = -1;;
CREATE DATABASE tpdev with OWNER = tpdev TEMPLATE = template0 ENCODING = 'WIN1252' LC_COLLATE = 'C' LC_CTYPE = 'C' TABLESPACE = tpdev_data CONNECTION LIMIT = -1;;
No pgAdmin, visualize no item Databases, os bancos de dados que foram criados:
Ou com a seguinte query:
SELECT spcname FROM pg_database;
| Nota | ||
|---|---|---|
| ||
Configure o ambiente Produção, Homologação e Desenvolvimento em servidores diferentes para evitar a concorrência de serviços computacionais. |
Métodos de autenticação
Para se conectar na instância, rode o seguinte comando:
| Bloco de código |
|---|
su - postgres
psql |
Pronto, você está conectado no postgres. Para quem está acostumado com Oracle, essa ferramenta é similar ao sqlplus. Você deve ter notado que não precisou colocar nenhum usuário e senha para esse acesso.
Nesse método se entende que o usuário conectado ao sistema operacional deve ter acesso ao Banco de Dados, sendo assim a restrição fica a cargo do acesso ao sistema operacional.
Para ajustar a configuração para utilizar autenticação no acesso via psql, acesse o arquivo pg_hba.conf e realize a modificação de acordo com a regra de segurança da empresa.
| Bloco de código |
|---|
sudo vim /var/lib/pgsql/12/data/pg_hba.conf |
...
| Bloco de código |
|---|
vim /var/lib/pgsql/12/data/pg_hba.conf |
...
Utilize o PostgreSQL em Linux para ambientes de produção. |
| Exibir filhos |
|---|
...
trust
...
Wiki Modo de Autenticação
https://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/Configura%C3%A7%C3%B5es/Configurar_acessos
https://www.postgresql.org/docs/12/auth-methods.html






