Alguns comandos serão exigidos várias vezes neste manual, para isso você precisará usar os seguintes comandos (quando solicitado):

Quando for solicitadoComando
Conectar ao banco PostgreSQLpsql -U postgres
Sair do banco (quando estiver conectado)\q
Reiniciar o PosgreSQLsystemctl stop postgresql
systemctl start postgresql
Verificar o status do serviços PosgreSQLsystemctl status postgresql
Habilitar uma extensão no PostgreSQLConecte no banco PostgreSQL e execute o comando:

CREATE EXTENSION nome_da_extensão;

Outro item importante a ser falado é que ambiente do servidor PosgreSQL, integrado ao LDAP, neste manual poderá ser feito de dois modos. Demonstrados seguindo fluxo abaixo:

Autenticação do PostgreSQL

Para a configuração desse servidor instale o CentOS 9 (caso precise, leia nosso post Instalação padrão do CentOS para isso). Tenha os seguintes pré-requisitos antes de continuar:

  • Faça o registro DNS (vincular o nome do servidor ao IP), para facilitar o acesso ao servidor para todas as equipes;
  • Dois discos
    • Instale o Sistema operacional todo no primeiro disco e deixe o segundo para configurar (descrito nesse manual) as bases do PostgreSQL;
  • Para o PgAdmin, será necessário:
    • Um grupo, no AD, para os usuários que poderão acessar.
    • Uma conta do AD de serviço: que:
      • Nunca expira
      • No Logon
      • Senha sem caracteres especiais
    • O Distinguished Name (DN) do:
      • Usuário de serviço;
      • Da OU onde ficam os usuários;
      • Do grupo com acesso ao pgAdmin;

Será instalado os seguintes pacotes (observando a matriz de compatibilidade do PostGIS):

PacoteVersãoOnde obter
PostgreSQL15.2https://postgresql.org
pgAdmin46.21https://pgadmin.org
GEOS3.10https://github.com/libgeos/geos
SFCGAL1.4.1https://gitlab.com/Oslandia/SFCGAL/-/releases
PROJ9.2.0https://github.com/OSGeo/PROJ/releases
GDAL3.5.3https://github.com/OSGeo/gdal/releases
protobuf-c1.4.1https://github.com/protobuf-c/protobuf-c/releases
json-c0.14https://github.com/json-c/json-c
PostGIS3.3.2https://postgis.net
pgAgent4.2.2https://www.pgadmin.org/download/pgagent-source-code/
pgrouting3.1.4https://docs.pgrouting.org/3.1

Instalação

Instale o CentOS no padrão, ao final da instalação execute:

mv /usr/bin/pg_config /usr/bin/pg_config_old

yum install bison flex libpq-devel makecache readline-devel zlib-devel openldap openldap-clients openldap-devel -y

cd /tmp
wget https://ftp.postgresql.org/pub/source/v15.2/postgresql-15.2.tar.gz
tar xpzf postgresql*.tar.gz
rm -rf postgresql*.tar.gz

cd postgresql*
./configure --prefix=/usr/local/pgsql --with-ldap

make

make install

cd contrib

make

make all

make install

cd /tmp
rm -rf postgresql*

firewall-cmd --zone=public --add-port=5432/tcp
firewall-cmd --zone=public --add-port=5432/tcp --permanent

adduser postgres

mkdir -p /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
chown postgres /var/lib/pgsql/data

cd /usr/local/pgsql/bin

for i in `ls *`; do ln -s /usr/local/pgsql/bin/$i /usr/bin/$i;done

su - postgres

initdb -D /var/lib/pgsql/data
pg_ctl -D /var/lib/pgsql/data -l logfile start

Volte como root e execute:

rm -rf /usr/share/pgsql
ln -s /usr/local/pgsql/share /usr/share/pgsql

cd /var/lib/pgsql/data
mkdir -p /etc/pgsql
for i in `ls *.conf`; do ln -s /var/lib/pgsql/data/$i /etc/pgsql/$i;done

sed -i "s/#listen_addresses =/listen_addresses = '*'\n#listen_addresses =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_destination =/log_destination = 'stderr'\n#log_destination =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#logging_collector =/logging_collector = on\n#logging_collector =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_directory =/log_directory = 'log'\n#log_directory =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_filename =/log_filename = 'postgresql.log'\n#log_filename =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_rotation_age =/log_rotation_age = 30d\n#log_rotation_age =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_rotation_size =/log_rotation_size = 0\n#log_rotation_size =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_truncate_on_rotation =/log_truncate_on_rotation = on\n#log_truncate_on_rotation =/g" /var/lib/pgsql/data/postgresql.conf
sed -i "s/#log_line_prefix =/log_line_prefix = '%m [%p] '\n#log_line_prefix =/g" /var/lib/pgsql/data/postgresql.conf

vim /usr/lib/systemd/system/postgresql.service

Pressione a tecla INSERT, para entrar em modo de edição e deixe o arquivo da seguinte forma:

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=idle
User=postgres

Environment=PGDATA=/var/lib/pgsql/data
Environment=PGPORT=5432
Environment=PGLOG=/var/log/postgresql.log

#ExecStart=cd /home/postgres & /usr/local/pgsql/bin/pg_ctl -D /var/lib/pgsql/data -l /var/log/postgresql.log
ExecStart=/usr/local/pgsql/bin/postmaster -D /var/lib/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
TimeoutStartSec=0
TimeoutStopSec=1h
OOMScoreAdjust=-1000
Restart=always
RestartSec=30s

[Install]
WantedBy=multi-user.target

Agora, execute os comandos:

systemctl enable postgresql

sed -i "s/host/#host/g" /var/lib/pgsql/data/pg_hba.conf
sed -i "s/local/#local/g" /var/lib/pgsql/data/pg_hba.conf

echo "# TEMPORARY LOCAL ACCESS (WITHOUT PASSWORD)" >> /var/lib/pgsql/data/pg_hba.conf
echo "local   all             all                                     trust" >> /var/lib/pgsql/data/pg_hba.conf
echo "# DEFAULT ACCESS" >> /var/lib/pgsql/data/pg_hba.conf
echo "host    all             all             0.0.0.0/0               md5" >> /var/lib/pgsql/data/pg_hba.conf

Desabilitando o acesso local sem senha

ATENÇÃO: Esse procedimento pode impedir um backup ou restore de um banco, tenha cuidado e desfaça esse procedimento, caso precise.

Da forma como configuramos até aqui o PostgreSQL aceita conexões locais sem necessitar de senha, para mudarmos isso vamos:

Para definirmos uma senha ao usuário local postgres, execute:

passwd postgres

O sistema solicitará a senha a ser definida, informe a senha e em seguida confirme-a. Agora, para alterar a configuração de conexões locais e exigir autenticação, execute o seguinte comando:

psql -U postgres

Ao acessar o banco (ainda sem senha), execute o seguinte comando para definir a nova senha:

ALTER USER postgres password 'SENHA_PARA_ESTA_CONTA';

Para sair do banco digite \q

Agora execute:

LOCALCONN=`cat /var/lib/pgsql/data/pg_hba.conf | grep ^local`

sed -i "s/$LOCALCONN\nhost all postgres       all                                     md5/local all all md5/g" /var/lib/pgsql/data/pg_hba.conf

Por fim, reinicie o PostgreSQL:

systemctl stop postgresql
systemctl start postgresql

Melhorando as informações do log

O log padrão do PostgreSQL informa/salva apenas 2 valores: O datetime(%m) e pid(%p). Para deixar configurado um log mais completo altere o arquivo postgresql.conf, com o comando:

vim /var/lib/pgsql/data/postgresql.conf

Localize a linha log_line_prefix. Em seguida pressione a tecla INSERT, para entrar em modo de edição e altere essa linha:

De:Altere para:
log_line_prefix = ‘%m [%p] ‘log_line_prefix = ‘%t [%p]: user=%u,db=%d,app=%a,client=%h ‘

Depois de alterar, pressione a tecla ESC para sair do modo de edição e digite :wq! para salvar e sair, em seguida reinicie o PostgreSQL, com o comando:

systemctl stop postgresql
systemctl start postgresql

Agora o log gerado pelo PostgreSQL passará a ter informações mais completas.

Integração de autenticação com o Active Directory

Conforme explicitado inicialmente, há duas formas de executar o fluxo de autenticação do usuário com o Active Directory, abaixo daremos duas opções, mas antes de continuar, sugerimos que você teste se o seu servidor está tendo acesso ao seu LDAP (e se suas informações, necessárias para configurar, estão corretas), pra isso tente o seguinte comando:

ldapsearch -x -b “DN_DA_OU_ONDE_ESTAO_OS_USUARIOS” -H ldap://IP_DO_SEU_DC -D “conta_de_serviço@seudominio.com.br”  “(&(objectClass=user)(memberOf=DN_DO_GRUPO_DO_AD))” -W

Opção 1 – Integrando a autenticação do Postfix com o LDAP

Antes de qualquer configuração, é necessário:

Para configurar, execute:

vim /etc/pgsql/pg_hba.conf

Localize a seguinte linha:

host    all             all             0.0.0.0/0               md5

Pressione a tecla INSERT do teclado, para entrar em modo de edição. Altere essa linha e deixe da seguinte forma (altere as partes em cinza, caso seja necessário, lembrando que o ldapbasedn não aceita apenas o domínio, PRECISA colocar uma OU):

host all all 0.0.0.0/0 ldap ldapserver=IP_DO_SEU_DC ldapbasedn=”DN_DA_OU_ONDE_ESTAO_OS_USUARIOS” ldapbinddn=”conta_de_serviço@seudominio.com.br” ldapbindpasswd=”SENHA_DESSA_CONTA” ldapsearchfilter=”(&(objectClass=user)(sAMAccountName=$username)(memberOf=DN_DO_GRUPO_DO_AD))”

Após a edição, pressione a tecla ESC para sair do modo de edição, em seguida digite :wq! e pressione ENTER para salvar e sair.

Agora, vamos criar os usuários no banco de dados, para terem o acesso após se autenticarem. Para isso, execute:

su - postgres

psql

Dentro do PostgreSQL, para cada usuário que é membro do grupo do Active Directory, execute (alterando a parte em cinza):

create user "login_do_ad" superuser createrole createdb;
create database login_do_ad;

\q

Reinicie o serviço do PostgreSQL e teste a conexão com um usuário LDAP.

Opção 2 – Utilizando o pgAdmin4

rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm

yum install pgadmin4-web policycoreutils-python-utils python-devel python3-devel -y

pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v6.9/pip/pgadmin4-6.9-py3-none-any.whl

pip install python-ldap psycopg2 ldap3
yum groupinstall "Development tools" -y
/usr/pgadmin4/bin/setup-web.sh

Configure o assistente (pode usar e-mail fictício)

firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=80/tcp --permanent

Execute os comandos abaixo, alterando as partes em cinza conforme a realidade do ambiente:

sed -i "s/AUTHENTICATION_SOURCES = \['internal'\]/AUTHENTICATION_SOURCES = \['ldap'\] /g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_USERNAME_ATTRIBUTE = '<User-id>'/LDAP_USERNAME_ATTRIBUTE = 'sAMAccountName'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_SERVER_URI = 'ldap:\/\/<ip-address>:<port>'/LDAP_SERVER_URI = 'ldap:\/\/10.1.0.2:389'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_BASE_DN = '<Base-DN>'/LDAP_BASE_DN = 'dc=seudominio,dc=com'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_SEARCH_BASE_DN = '<Search-Base-DN>'/LDAP_SEARCH_BASE_DN = 'dc=seudominio,dc=com'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_SEARCH_FILTER = '(objectclass=*)'/LDAP_SEARCH_FILTER = '(&(objectClass=user)(memberof=DN_DO_GRUPO_DO_AD))'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_BIND_USER = None/LDAP_BIND_USER = 'conta_de_serviço@seudominio.com.br'/g" /usr/pgadmin4/web/config.py
sed -i "s/LDAP_BIND_PASSWORD = None/LDAP_BIND_PASSWORD = 'senha_desta_conta'/g" /usr/pgadmin4/web/config.py

Agora, acesse http://IP_DO_SEU_SERVIDOR/pgadmin4, caso tenha problemas com a autenticação LDAP, teste no Linux (comando ldapsearch -x -b “dc=seudominio,dc=com” -H ldap://IP_DO_SEU_DC -D “conta_de_serviço@seudominio.com.br” -W) e faça o troubleshoot do que há de errado.

Instalação do GEOS

yum install epel-release -y

yum install geos geos-devel -y

Instalação do SFCGAL

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum install boost boost-devel cmake gcc-c++ gmp gmp-devel mpfr-devel qt5 SFCGAL SFCGAL-libs yasm -y

cd /tmp

wget https://github.com/CGAL/cgal/releases/download/v5.5.2/CGAL-5.5.2.zip
wget https://gitlab.com/Oslandia/SFCGAL/-/archive/v1.4.1/SFCGAL-v1.4.1.tar.gz

unzip CGAL-*.zip
tar xpzf SFCGAL-v1.4.1.tar.gz
rm -rf CGAL-*.zip
rm -rf SFCGAL-*.gz
cd CGAL

cmake .

make install

cd /tmp/SFCGAL-*

cmake . && make && sudo make install

cd /tmp
rm -rf *GAL-*

Instalação do PROJ

yum install libcurl-devel libtiff libtiff-devel sqlite libsqlite3x sqlite-devel -y

cd /tmp
wget https://github.com/OSGeo/PROJ/releases/download/9.2.0/proj-9.2.0.tar.gz
tar xpzf proj*.tar.gz
rm -rf proj*.tar.gz

cd proj*
mkdir build
cd build
cmake ..

cmake --build .
cmake --build . --target install

cd /tmp
rm -rf proj*

Instalação do GDAL

ldconfig

yum install epel-release libxml2-devel pcre-devel -y

cd /tmp

wget https://github.com/OSGeo/gdal/releases/download/v3.5.3/gdal-3.5.3.tar.gz

tar xpzf gdal*.tar.gz
rm -rf gdal*.tar.gz
cd gdal*

./configure --with-libkml --prefix=/usr
make

make install

cd /tmp
rm -rf gdal*

Instalação do protobuf-c

yum install protobuf protobuf-c protobuf-c-devel protobuf-devel protobuf-compiler --enablerepo=crb -y

cd /tmp
wget https://github.com/protobuf-c/protobuf-c/releases/download/v1.4.1/protobuf-c-1.4.1.tar.gz

tar xpzf protobuf*.tar.gz
rm -rf protobuf*.gz

cd protobuf*
./configure

make
make install

Instalação do json-c

yum install json-c -y

Instalação do PostGIS

rm -rf /usr/bin/sfcgal-config
cd /usr/local/bin
for i in `ls`; do ln -s /usr/local/bin/$i /usr/bin/$i;done

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

yum install epel-release libxml2-devel pcre-devel -y
cd /tmp

wget https://download.osgeo.org/postgis/source/postgis-3.3.2.tar.gz
tar xpzf postgis-3.3.2.tar.gz

rm -rf postgis*.tar.gz
cd postgis*

./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --libdir=/usr/local/lib64/ --with-sfcgal=/usr/bin/sfcgal-config

make
make install

cd extensions/postgis
make clean
make
export PGUSER=postgres
make install

cd /tmp
rm -rf postgis*

cd /usr/local/lib64/
for i in `ls *.*`;do ln -s /usr/local/lib64/$i /usr/lib64/$i; done

Para habilitar, acesse o postgreSQL e execute o comando:

CREATE EXTENSION postgis;

Instalação do pgRouting

yum install cmake doxygen g++ pcre-devel perl texlive -y

cd /tmp
wget -O pgrouting-3.1.4.tar.gz https://github.com/pgRouting/pgrouting/archive/v3.1.4.tar.gz

tar xpzf pgrouting-3.1.4.tar.gz
rm -rf pgrouting*.tar.gz
cd pgrouting*

mkdir build
cd build

sed -i "s/\/usr\/include\/server/\/usr\/local\/pgsql\/include\/server/g" /tmp/pgrouting-3.1.4/cmake/FindPostgreSQL.cmake

cmake  ..

sed -i "s/POSTGRESQL_EXECUTABLE\:FILEPATH/POSTGRESQL_EXECUTABLE\:FILEPATH=\/usr\/local\/pgsql\/lib\n#POSTGRESQL_EXECUTABLE\:FILEPATH/g" CMakeCache.txt

cmake -DWITH_TSP=ON -DWITH_DD=ON

make

sudo make install

ln -s /usr/lib64/pgsql/libpgrouting-3.1.so /usr/local/pgsql/lib/libpgrouting-3.1.so

cd /tmp
rm -rf postrouting*

Instalação do ogr_fdw

yum install gcc-c++

cd /tmp

wget https://github.com/pramsey/pgsql-ogr-fdw/archive/refs/tags/v1.1.3.tar.gz

tar xpzf v1.1.3.tar.gz
rm -rf v1.1.3.tar.gz

cd pgsql-ogr-fdw*

ln -s /usr/local/pgsql/lib/pgxs /usr/lib64/pgsql/pgxs
ln -s /usr/local/pgsql/include/server /usr/include/pgsql/
cp -R /usr/local/pgsql/include/server/* .

make

make install

cd /tmp
rm -rf pgsql-ogr-fdw*
ln -s /usr/lib64/pgsql/ogr_fdw.so /usr/local/pgsql/lib/

Para habilitar, acesse o postgreSQL e execute o comando: 

CREATE EXTENSION ogr_fdw;

Saia do Postgres

Instalação do pointcloud

yum install autoconf automake CUnit-devel libxml2-devel --enablerepo=crb -y

cd /tmp
wget https://github.com/pgpointcloud/pointcloud/archive/refs/tags/v1.2.4.tar.gz

tar -xpzf v1.2.4.tar.gz
rm -rf v1.2.4.tar.gz

cd pointcloud*
./autogen.sh

Confirme que o comando retornou Now you are ready to run ‘./configure’, em seguida execute:

./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config

make

make install

cd /tmp
rm -rf pointcloud*

Para habilitar, acesse o postgreSQL e execute o comando:

CREATE EXTENSION pointcloud;

Saia do Postgres

Instalação do tds_fdw

yum install freetds freetds-devel gcc make wget -y

cd /tmp
wget https://github.com/tds-fdw/tds_fdw/archive/refs/tags/v2.0.3.tar.gz

tar -xpzf v2.0.3.tar.gz
rm -rf v2.0.3.tar.gz

cd tds_fdw*
make USE_PGXS=1 PG_CONFIG=/usr/local/pgsql/bin/pg_config

sudo make USE_PGXS=1 PG_CONFIG=/usr/local/pgsql/bin/pg_config install

cd /tmp
rm -rf tds_fdw*

Para habilitar, acesse o postgreSQL e execute o comando:

CREATE EXTENSION tds_fdw;

Saia do Postgres

Instalação do pgAgent

cd /tmp

wget https://github.com/pgadmin-org/pgagent/archive/refs/tags/pgagent-4.2.2.tar.gz

tar xpzf pgagent*.tar.gz

rm -rf pgagent*.gz
mv pgagent* /usr/local/pgagent

ccmake /usr/local/pgagent

Na tela que abrir, digite c para configurar (aguarde), depois pressione e para voltar à tela anterior. Repita novamente os comandos (c e e), em seguida pressione g para gerar.

Agora compile:

make

make install

ln -s /usr/local/pgagent/pgagent /usr/bin/pgagent
ln -s /usr/local/pgagent/pgagent.control.in /usr/local/pgsql/share/extension/pgagent.control

Acesse o PostgreSQL (comando psql) com o usuário postgres e, dentro do banco, execute o seguinte comando:

CREATE EXTENSION pgagent;
CREATE LANGUAGE plpgsql;

Saia do PostgreSQL (comando \q) e execute:

groupadd pgagent

adduser pgagent --gid pgagent --system --shell /sbin/nologin

mkdir -p /etc/pgagent
mkdir -p /var/log/pgagent
touch /var/log/pgagent/pgagent.log

chown pgagent.pgagent /var/log/pgagent/pgagent.log
chmod 644 /var/log/pgagent/pgagent.log

vim /usr/lib/systemd/system/pgagent.service

Pressione a tecla INSERT, para entrar em modo de edição e deixe o arquivo com o seguinte conteúdo:

[Unit]
Description=PgAgent for PostgreSQL
After=syslog.target After=network.target
After=postgresql.target

[Service]
Type=forking

User=pgagent
Group=pgagent

# Location of the configuration file
EnvironmentFile=/etc/pgagent/pgagent.conf

OOMScoreAdjust=-1000

ExecStart=/usr/local/bin/pgagent -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT}
KillMode=mixed
KillSignal=SIGINT

Restart=on-failure
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Ao final, pressione a tecla ESC para sair do modo de edição e digite :wq! para salvar e sair, em seguida execute:

vim /etc/pgagent/pgagent.conf

Pressione a tecla INSERT, para entrar em modo de edição e deixe o arquivo com o seguinte conteúdo:

DBNAME=postgres
DBUSER=postgres
DBHOST=127.0.0.1
DBPORT=5432
LOGFILE=/var/log/pgagent/pgagent.log

Ao final, pressione a tecla ESC para sair do modo de edição e digite :wq! para salvar e sair, em seguida execute:

vim /etc/logrotate.d/pgagent

Pressione a tecla INSERT, para entrar em modo de edição e deixe o arquivo com o seguinte conteúdo:

/var/log/pgagent/pgagent.log {
    missingok
    compress
    notifempty
    sharedscripts
    create 0640 pgagent pgagent
    nodateext
    weekly
    rotate 5
}

Ao final, pressione a tecla ESC para sair do modo de edição e digite :wq! para salvar e sair, em seguida execute:

vim /var/lib/pgsql/data/pg_hba.conf

Pressione a tecla INSERT, para entrar em modo de edição e insira no começo do arquivo o seguinte conteúdo:

host    all             postgres             127.0.0.1/32            trust

Ao final, pressione a tecla ESC para sair do modo de edição e digite :wq! para salvar e sair, em seguida reinicie o PostgreSQL:

systemctl stop postgresql
systemctl start postgresql

Verifique se o serviço está funcionando corretamente. Em seguida habilite e inicie o PgAgent:

systemctl enable pgagent
systemctl start pgagent

Verifique se o PgAgent está funcionando corretamente. Em seguida, execute:

cd /tmp

rm -rf pgagent*

Consulte o arquivo /var/log/pgagent/pgagent.log para ver se está dando algum erro de conexão.

Executando um backup e um restore do banco

Antes de fazer o backup ou o restore, altere para o usuário posgres, com o comando:

mkdir -p /var/lib/pgsql/backup
chmod 777 mkdir -p /var/lib/pgsql/backup
  • Use o comando (altere as partes em cinza conforme sua realidade, será necessário informar o nome do banco duas vezes):
Para fazer o backup dos usuários e roles, execute os comandos:

pg_dumpall -U postgres -v –roles-only -f /var/lib/pgsql/backup/roles.sql
pg_dumpall -U postgres -v –globals-only -f /var/lib/pgsql/backup/globals.sql

Para fazer backup de uma base, execute o comando:

pg_dump -F c -b -v -f /var/lib/pgsql/backup/NOME_DO_BANCO.sql NOME_DO_BANCO -U postgres

Informe a senha do usuário postgres.
  • Use os comandos (altere as partes em cinza conforme sua realidade):
Para restaurar os usuários e roles de um backup (ATENÇÃO: isso poderá redefinir as senhas e criptografia das senhas dos usuários do banco), execute os comandos:

psql -d postgres -U postgres -f /var/lib/pgsql/backup/roles.sql
psql -d postgres -U postgres -f /var/lib/pgsql/backup/globals.sql

Para restaurar uma base, execute:

psql -U postgres

Informe a senha do usuário postgres, após acessar o banco execute:

CREATE DATABASE NOME_DO_BANCO;
\q

Agora, para restaurar os dados, execute o comando:

pg_restore –dbname=NOME_DO_BANCO /var/lib/pgsql/backup/NOME_DO_BANCO.sql -U postgres

Informe a senha e aguarde o processo de cópia dos dados. Ao final, acesse novamente o banco e execute os seguintes comandos:

psql -U postgres \c NOME_DO_BANCO \dt   SELECT * FROM app_users;

Se tiver listado corretamente, saia com o comando:

\q

Fontes/Referências

NVLAN – Adicionar disco no Linux
NVLAN – Expandir um disco ext4 no CentOS

https://askubuntu.com/questions/354686/postgres-doesnt-have-hstore-extension
https://blog.csdn.net/wm6752062/article/details/88710983
https://community.pivotal.io/s/article/5000e00001oJXEh1608545876878?language=en_US
http://dark-hamster.com/database/how-to-solve-configure-error-readline-library-not-found-when-installing-postgresql/
https://dbi-services.com/blog/syncing-active-directory-users-and-groups-to-postgresql/
https://github.com/CGAL/cgal/releases/tag/v5.5.2
https://github.com/json-c/json-c
https://github.com/libgeos/geoshttps://github.com/OSGeo/gdal/releases
https://github.com/OSGeo/PROJ/releases
https://github.com/protobuf-c/protobuf-c/releases
https://gitlab.com/Oslandia/SFCGAL/-/releases
https://oslandia.gitlab.io/SFCGAL/installation.html
https://pgadmin.org
https://pgadmin.org/download/pgadmin-4-rpm
https://pgadmin.org/download/pgagent-source-code/
https://postgis.net
https://postgresql.org
https://trac.osgeo.org/postgis/wiki/UsersWikiPostgreSQLPostGIS
https://www.sqlshack.com/learn-postgresql-install-postgresql-on-centos-linux/
https://www.vultr.com/docs/install-pgadmin-4-for-postgresql-on-freebsd-12-2
https://www.vultr.com/docs/how-to-backup-and-restore-postgresql-databases-with-pg-dump
https://stackoverflow.com/questions/72044942/how-do-i-use-md5-authentication-in-postgresql
https://www.postgresonline.com/article_pfriendly/81.html
https://docs.pgrouting.org/3.1
https://www.postgresql.org/docs/current/contrib.html
https://xmodulo.com/configure-error-pcre-h-not-found.html

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria
Categorias: POSTs