Я решаю странную проблему с одной установкой PostgreSQL 10.4. Один из экземпляров баз данных PostgreSQL перестал работать через 7 месяцев без проблем. Когда этот парень увидел, что база данных не перекодировалась, попытался перезапустить базу данных и де-ОС, но это не сработало.

Итак, я начал просматривать логи и ничего не нашел, только заявления о выключении no postgresql_20190208.log

2019-02-08 16:24:07.749 -02 [12878] LOG:  could not receive data from client: Connection reset by peer
2019-02-08 16:30:59.421 -02 [27180] LOG:  received fast shutdown request
2019-02-08 16:30:59.422 -02 [27180] LOG:  aborting any active transactions
2019-02-08 16:30:59.422 -02 [44204] FATAL:  terminating connection due to administrator command
2019-02-08 16:30:59.422 -02 [13796] FATAL:  terminating autovacuum process due to administrator command
2019-02-08 16:30:59.422 -02 [95589] FATAL:  terminating connection due to administrator command

Хорошо, когда я проверил файл startup.log, я обнаружил:

2019-02-08 16:31:00.861 -02 [13815] FATAL:  could not access file "": No such file or directory
2019-02-08 16:31:00.861 -02 [13815] LOG:  database system is shut down

Я никогда не видел этого раньше. Я ожидаю, что в сообщении будет показан файл с проблемой или что-то, что может повредить некоторые данные, но пустой адрес файла не так уж сильно помогает.

Итак, я попытался запустить базу данных самостоятельно

postgres -D datadir/ -d 5 ;
2019-02-08 22:39:19.010 -02 [45971] DEBUG:  postgres: PostmasterMain: initial environment dump:
[some envirounment variables]
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  registering background worker "logical replication launcher"
2019-02-08 22:39:19.011 -02 [45971] DEBUG: find_in_dynamic_libpath: trying "/banco/PostgreSQL/10/lib/postgresql/"
2019-02-08 22:39:19.011 -02 [45971] DEBUG: find_in_dynamic_libpath: trying "/banco/PostgreSQL/10/lib/postgresql/.so"
2019-02-08 22:39:19.011 -02 [45971] FATAL:  could not access file "": No such file or directory
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  shmem_exit(1): 0 before_shmem_exit callbacks to make
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  shmem_exit(1): 0 on_shmem_exit callbacks to make
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  proc_exit(1): 1 callbacks to make
2019-⁠02-⁠08 22:39:19.011 -⁠02 [45971] LOG:  database system is shut down
2019-⁠02-⁠08 22:39:19.011 -⁠02 [45971] DEBUG:  exit(1)
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  shmem_exit(-1): 0 before_shmem_exit callbacks to make
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  shmem_exit(-1): 0 on_shmem_exit callbacks to make
2019-02-08 22:39:19.011 -02 [45971] DEBUG:  proc_exit(-1): 0 callbacks to make

После увиденного я подумал: может быть, установка postgresql испортилась. Итак, я сделал резервную копию папки данных и запустил команду initdb для проверки, и она сработала.

Кто-нибудь из вас видел, как это произошло? Я пробую другую стратегию, которая переустанавливает весь postgres и просто копирует папку данных, чтобы увидеть, работает ли она. Если этого не произойдет, я восстановлю вчерашнюю резервную копию

Ребята, вы знаете, что может быть причиной этого?

1 ответ1

0

Эти строки выделяются:

2019-02-08 22:39:19.011 -02 [45971] DEBUG: find_in_dynamic_libpath: trying "/banco/PostgreSQL/10/lib/postgresql/"
2019-02-08 22:39:19.011 -02 [45971] DEBUG: find_in_dynamic_libpath: trying "/banco/PostgreSQL/10/lib/postgresql/.so"
2019-02-08 22:39:19.011 -02 [45971] FATAL:  could not access file "": No such file or directory

В нем говорится, что postgresql.conf просит загрузить разделяемую библиотеку с пустым именем файла. Это может произойти с такой декларацией, например:

shared_preload_libraries = '""'

Тестирование этого объявления на моем самостоятельно скомпилированном экземпляре:

2019-02-09 18:42:13 CET  DEBUG:  registering background worker "logical replication launcher"
2019-02-09 18:42:13 CET  DEBUG:  find_in_dynamic_libpath: trying "/usr/local/pgsql/lib/"
2019-02-09 18:42:13 CET  DEBUG:  find_in_dynamic_libpath: trying "/usr/local/pgsql/lib/.so"
2019-02-09 18:42:13 CET  FATAL:  could not access file "": Aucun fichier ou dossier de ce type
2019-02-09 18:42:13 CET  DEBUG:  shmem_exit(1): 0 before_shmem_exit callbacks to make
2019-02-09 18:42:13 CET  DEBUG:  shmem_exit(1): 0 on_shmem_exit callbacks to make
2019-02-09 18:42:13 CET  DEBUG:  proc_exit(1): 1 callbacks to make
2019-02-09 18:42:13 CET  LOG:  database system is shut down
2019-02-09 18:42:13 CET  DEBUG:  exit(1)

Тот же результат, что и у вас, за исключением того, что ваш $libdir выглядит как /banco/PostgreSQL/10/lib/postgresql/ .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .