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.
...
| 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. |
| 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) |
| 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://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
Abrir a conexão ODBC - 64 bits: C:\windows\system32\odbcad32.exe, adicionar uma nova conexão:
Configurar conforme os dados de criação de base de dados: tpprd, tphml e tpdev.
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:
Ou com a seguinte query:
SELECT tablename FROM pg_tables where tableowner='tpprd';
Links Relacionados:
Wiki Guia para Report de Problemas
Grupo Telegram com mais de 2mil membros mantido pelo time da timbiras
http://pgdocptbr.sourceforge.net/pg80/app-pgdump.html
https://pgtune.leopard.in.ua/#/
https://tdn.totvs.com/display/tec/DBAccess
https://www.postgresql.org/docs/12/app-initdb.html








