Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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.

...

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.


Nota
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:

...

Diretamente no Sistema Operacional com a ferramenta psql:


Bloco de código
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:


Bloco de código
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:

...

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://www.postgresql.org/docs/12/auth-methods.html


  • Backup.


Como diria um grande professor no passado, a coisa mais importante de um banco de dados é backup, backup, backup e por último backup.

Segue o comando de backup no PostgreSQL:


Bloco de código
su - postgres
pg_dump -Fc  tmprd -v -U postgres > tmprd_backup.dump


Descrição

O pg_dump é um utilitário para fazer cópias de segurança de um banco de dados do PostgreSQL. São feitas cópias de segurança consistentes, mesmo que o banco de dados esteja sendo utilizado ao mesmo tempo. O pg_dump não bloqueia os outros usuários que estão acessando o banco de dados (leitura ou escrita).

O comando acima irá realizar o backup na unidade que você estiver logado no Sistema Operacional, indicamos a criação de uma unidade separada do banco de dados e sistema operacional, e que possua backup externo configurado. Garantindo assim um backup fora do servidor de banco de dados.

Opções

-F formato

--format=formato

c

Gera um arquivo personalizado adequado para servir de entrada para o pg_restore. Este é o formato mais flexível, porque permite a reordenação da restauração dos dados, assim como das definições dos objetos. Além disso, este formato é comprimido por padrão.

-v

--verbose

Especifica o modo verboso, fazendo o pg_dump colocar comentários detalhados sobre os objetos e os tempos de início/fim no arquivo de cópia de segurança, e mensagens de progresso na saída de erro padrão.

-U nome_do_usuário

Conectar como o usuário especificado.


  • Restore.


Tão importante quanto realizar o backup é realizar o restore de forma satisfatória.

Segue o comando de restore no PostgreeSQL:

su - postgres

pg_restore -d p12hml -v -c -U p12hml < tmprd_backup.dump

Onde temos pg_restore que é o comando solicitando o restore do arquivo:  “tmprd_backup.dump”.

-d = dbname

Esse é o banco de dados onde deve ser restaurado o backup.

-v = verbose

Especifica o modo verbose

- c = clean

Limpar os objetos do banco de dados antes de recriar ele.

-U = Username

Usuário para a conexão no banco de dados.

O comando acima irá realizar o restore se você estiver na unidade do Sistema Operacional em que o arquivo se encontra, indicamos a criação de uma unidade separada do banco de dados e sistema operacional, e que possua backup externo configurado. Garantindo assim um backup fora do servidor de banco de dados.


  • Configuração ODBC

A configuração ODBC é necessária para conexão do DBAccess com o Banco de Dados, vamos aos exemplos de configurações

# LINUX

Conecte-se no Sistema Operacional e rode o seguinte comando:


Bloco de código
sudo su
yum update
yum install unixODBC.x86_64 postgresql-odbc.x86_64
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
dnf update
yum install postgresql12-odbc.x86_64


Exemplo:

Configurar o arquivo odbc criado, apontando cada base de dados:


Bloco de código
# /etc/odbc.ini

[tpprd]
Servername=10.2.0.8 (configurar o ip do servidor de banco de dados tpprd)
Username=tpprd (nome do user)
Password=tpprd (senha do user)
Database=tpprd (base de dados)
Driver=PostgreSQL
Port=5432
ReadOnly=0
MaxLongVarcharSize=2000
UnknownSizes=2
UseServerSidePrepare=1

[tphml]
Servername=10.2.0.8 (configurar o ip do servidor de banco de dados tphml)
Username=tphml
Password=tphml
Database=tphml
Driver=PostgreSQL
Port=5432
ReadOnly=0
MaxLongVarcharSize=2000
UnknownSizes=2
UseServerSidePrepare=1

[tpdev]
Servername=10.2.0.8 (configurar o ip do servidor de banco de dados tpdev)
Username=tpdev
Password=tpdev
Database=tpdev
Driver=PostgreSQL
Port=5432
ReadOnly=0
MaxLongVarcharSize=2000
UnknownSizes=2
UseServerSidePrepare=1


# Windows

Realizar o download do driver ODBC postgres, nesse caso ODBC12

https://ftp.postgresql.org/pub/odbc/versions/msi/psqlodbc_12_02_0000-x64.zip

Image Added

Image Added

Image Added

Image Added

Image Added

Abrir a conexão ODBC - 64 bits: C:\windows\system32\odbcad32.exe, adicionar uma nova conexão:

Image Added

Configurar conforme os dados de criação de base de dados: tpprd, tphml e tpdev.

Image Added

Image Added

Após configurar o ODBC, realizar a instalação do DBAccess e pode configurar o dbaccess.ini da seguinte forma:

Linux


Bloco de código
#/totvs/microsiga/dbaccess/multi/dbaccess.ini

[General]
ByYouProc=0
ODBC30=1
LicenseServer=10.2.0.9
LicensePort=5555
;;;;;------- Quando se utiliza o DBAccess em Linux é importante apontar o clientlibrary do odbc após ter realizado a instalação conforme o exemplo abaixo:

[POSTGRES]
environments=tpprd,tphml,tpdev
clientlibrary=/usr/pgsql-12/lib/psqlodbca.so
CodePage=WIN1252

[POSTGRES/tpprd]
user=tpprd
password=
TableSpace=tpprd_data
IndexSpace=tpprd_index

[POSTGRES/tphml]
user=tphml
password=
TableSpace=tphml_data
IndexSpace=tphml_index

[POSTGRES/tpdev]
user=tpdev
password=
TableSpace=tpdev_data
IndexSpace=tpdev_index


Windows


Bloco de código
#D:\totvs\microsiga\dbaccess\dbaccess.ini

[General]
LicenseServer=10.2.0.9
LicensePort=5555
ODBC30=1

[POSTGRES]
environments=TPPRD,TPHML,TPDEV

[POSTGRES/TPPRD]
user=tpprd
password=œðö¼
TableSpace=tpprd_data
IndexSpace=tpprd_index

[POSTGRES/TPHML]
user=tphml
password=œðèó´
TableSpace=tphml_data
IndexSpace=tphml_index

[POSTGRES/TPDEV]
user=tpdev
password=œðäëŠ
TableSpace=tpdev_data
IndexSpace=tpdev_index


Após o teste de conexão podemos verificar a criação das tabelas do DBAccess no banco de dados, sendo assim o banco de dados está liberado para ser utilizado para o ERP.

No pgAdmin podemos visualizar no “Databases” + “tpprd” + “Schemas” + “Tables”, as tabelas que foram criadas após o teste de conexão do DBAccess:

Image Added

Ou com a seguinte query:

SELECT tablename FROM pg_tables where tableowner='tpprd';

Image Added


Links Relacionados:

Wiki Guia para Report de Problemas

Grupo Telegram com mais de 2mil membros mantido pelo time da timbiras 

Ferramentas para o PostgreSQL



http://pgdocptbr.sourceforge.net/pg80/app-pgdump.html

https://pgtune.leopard.in.ua/#/

https://tdn.totvs.com/display/tec/DBAccess

https://www.postgresql.org/

https://www.postgresql.org/docs/12/app-initdb.html