Histórico da Página
| 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 | ||
|---|---|---|
| ||
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 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/ (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 | ||
|---|---|---|
| ||
| 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 |
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) |
| reject | rejeita conexão incondicionalmente para o user/host especificado |
| crypt | recomendada somente para versões inferiores a 7.2. Atualmente recomenda-se md5 |
| krb5 | somente disponível para conexões via TCP/IP |
| ident | Obté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. |
| pam | usando o serviço PAM (Pluggable Authentication Modules) do sistema operacional. |
| password | envia senha em texto claro. |
| md5 | deve 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
