Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Bloco de código

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.

...

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
titleAtenção

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:

...

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:

T (TOTVS) P (Protheus) PRD (Produção)TPPRD
T (TOTVS) P (Protheus) HML (Homologação)TPHML
T (TOTVS) P (Protheus) DEV (Desenvolvimento)TPDEV

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"CREATE USER tpprd WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpprd'.”"
psql -c “CREATE"CREATE USER tphml WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tphml'"
psql -c “CREATE"CREATE USER tpdev WITH LOGIN NOSUPERUSER INHERIT CREATEDB NOCREATEROLE NOREPLICATION CONNECTION LIMIT -1 PASSWORD 'tpdev'"

Ou com a ferramenta pgAdmin:

...

Após a criação do usuário, vamos criar crie os tablespaces e dar permissão ao usuário criado.

Informações
titleInformaçõ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/ (pgdata é o path criado no sistema operacional exclusivo para datafiles protheus, pode ser especificado qual é seu path) 

  •  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
titleObservação
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:

Image Added

Ou com a query:

Bloco de código
SELECT spcname FROM pg_tablespace;


Image Added

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:

Image Added

Ou com a seguinte query:

SELECT spcname FROM pg_database;

Image Added

Nota
titleAtenção

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


ou

Bloco de código
vim /var/lib/pgsql/12/data/pg_hba.conf


Métodos
:



trust

permite conexão a qualquer um incondicionalmente (sem senha)
rejectrejeita conexão incondicionalmente para o user/host especificado
cryptrecomendada somente para versões inferiores a 7.2. Atualmente recomenda-se md5
krb5somente disponível para conexões via TCP/IP
identObtém o nome do usuário do sistema operacional. Para conexões TCP/IP contacta o servidor ident no cliente. Para conexões locais, recebendo este do sistema operacional.
pamusando o serviço PAM (Pluggable Authentication Modules) do sistema operacional.
passwordenvia senha em texto claro.
md5deve ser preferido, pois envia senhas criptografadas.


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