Eu tenho problema com a conexão com o banco de dados via psql. Eu recebo este erro:
postgres@server:/var/lib/pgsql # psql -d aisgdmp2
psql: error: FATAL: database "aisgdmp2" does not exist
DETAIL: The database subdirectory "pg_tblspc/16385/PG_13_202007201/16386" is missing.
postgres@server:/var/lib/pgsql #
Mas quando eu me conecto ao posgtres e listo os db's, o db aisgdmp2 existe...
postgres@server:/var/lib/pgsql # psql
psql (13.5)
postgres=# \l
DB list
Name | Owner | Code | Collation | CType | Privileges
-----------+----------+----------+-------------+-------------+-----------------------
aisgdmp2 | aisg | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8 | =Tc/aisg +
| | | | | aisg=CTc/aisg
postgres | postgres | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8 |
template0 | postgres | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | cs_CZ.UTF-8 | cs_CZ.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
postgres=#
Alguma ideia de onde está o problema? O banco de dados estava em execução no passado, mas esteve fora do ar nos últimos dois meses.
O erro importante é este:
Para corrigir o banco de dados existente com o tablespace ausente , pode ser necessário restaurar o banco de dados de um arquivo dump. O termo padrão da indústria é chamado de backup de banco de dados. O PostgreSQL chama isso de arquivo dump.
Para evitar perder o que está lá, você pode instalar outra instância do Postgres em outro lugar e criar um banco de dados com o mesmo nome e restaurá-lo a partir do arquivo dump do banco de dados inválido como teste, usando o primeiro link, até obter sucesso. Ou restaure um banco de dados com um nome diferente do arquivo dump, usando o segundo link.
Olhe para estes:
https://helicaltech.com/solve-pg_tblspc-problem-postgres/
https://stackoverflow.com/questions/19223522/how-to-restore-postgres-database-into-another-database-name
Verifique onde o diretório do tablespace deve estar localizado:
ou via link simbólico no
pg_tblspc
diretório:Depois disso, verifique se esse sistema de arquivos está montado, o diretório existe e não está vazio. É possível que a partição não tenha sido montada automaticamente por algum motivo (por exemplo, não foi adicionada
fstab
ou o nome do dispositivo de bloco foi alterado). Depois de corrigir o erro, os dados podem ficar disponíveis novamente - desde que o postgresql foi iniciado, os dados no tablespace estavam em um estado consistente no momento em que o banco de dados foi encerrado. Mas se o tablespace foi perdido, todos os dados também serão perdidos.