Postgresql - Прекращает прослушивание после монтирования тома в каталог данных

У меня временная потребность в базе данных postgresql на 180 ГБ. В целях экономии у меня есть это на дешевом дисковом сервере 40 ГБ, и я хочу смонтировать том 200 ГБ в каталог данных postgresql.

Моя проблема: после остановки postgresql смонтируйте том, скопируйте содержимое, обновите postgresql.conf, запустите postgresql, он перестает прослушивать 5432

Мой вопрос: Почему это происходит?

Мой порядок операций:

  1. netstat и вижу, что postgres прослушивает 5432 для любого удаленного (скрытого) netstat - тюльпен Активные интернет-соединения (только серверы) Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние Inode пользователя PID / Имя программы tcp 0 0 0.0.0.0:5432 0.0.0.0:* СЛУШАТЬ 112 44384 25831 / postgres tcp 0 0 0.0.0.0:3451 0.0.0.0:* СЛУШАТЬ 0 94839 15010 / sshd tcp6 0 0 ::: 5432 ::: * СЛУШАТЬ 112 44385 25831 / postgres tcp6 0 0 ::: 3451 ::: * СЛУШАТЬ 0 94848 15010 / sshd

затем

  1. остановить postgresql
  2. создать новый каталог / mnt / something
  3. mount / dev / xvdb в / mnt / something /
  4. Скопировать содержимое '/var/lib/postgresql/9.5/ main / 'в новый том' / mnt / something '

  5. Отредактируйте postgresql.conf и измените "каталог данных" на новый том ..

     data_directory =' / mnt / something '# использовать данные в другом каталоге
      # (изменение требует перезагрузки)
    hba_file = '/etc/postgresql/9.5/main/pg_hba.conf' # файл аутентификации на основе хоста
      # (изменение требует перезагрузки)
    identity_file = '/etc/postgresql/9.5/main/pg_ident.conf' # файл конфигурации идентификатора
      # (изменение требует перезагрузки)
     
  6. Запустите postgresql

  7. netstat и обнаружите, что postgresql больше не прослушивает 5432

     root @ foobar: / # netstat -tulpen
    Активные интернет-соединения (только серверы)
    Proto Recv-Q Send-Q Локальный адрес Внешний адрес Состояние Inode пользователя PID / Имя программы
    tcp 0 0 0.0.0.0:3451 0.0.0.0:* СЛУШАТЬ 0 94839 15010 / sshd
    tcp6 0 0 ::: 3451 ::: * СЛУШАТЬ 0 94848 15010 / sshd
     

Сначала я подумал, что что-то в postgresql.conf я испортил, разрешая удаленные подключения, но после восстановления сервера несколько раз, проходя через этот процесс, он определенно прослушивает 5432 до тех пор, пока я не смонтирую новый том.
Postgresql отлично работает удаленно, пока я не смонтирую том и не обновлю каталог данных в conf. Кроме того, он не начнет прослушивание даже после того, как я отключу том и восстановлю резервную копию исходного postgresql.conf . Мне кажется, что то, что я делаю в маунте, ломает его.
Я создал правило, разрешающее 5432 в IPtables, но это не исправляет (и помните, удаленные соединения работают нормально до монтирования, поэтому я не думаю, что это брандмауэр).

Есть предложения?

Думаю, это что-то вроде lsof , но я застрял.

0
задан 21 March 2019 в 18:42
1 ответ

5) Скопируйте содержимое "/var/lib/postgresql/9.5/main/" в новый том. Наиболее правдоподобной причиной, по которой PostgreSQL терпит неудачу сразу после запуска, является то, что на этом этапе не сохраняются точные разрешения/владельцы файлов и каталогов, которые копируются. Если вы используете cp, обязательно добавьте опцию -p.

7) Запустите netstat postgresql

8) и обнаружите, что postgresql больше не прослушивает 5432

Вы, кажется, ищете проблему в сети, но не прослушивание порта 5432, скорее всего, это связано с тем, что PostgreSQL выходит сразу же по ошибке после шага #7. Как упоминалось в комментариях, проверьте журналы Postgresql: причина, по которой он не запускается, должна быть явно написана там. Обычно журналы находятся в /var/log/postgresql/ (учитывая упомянутые пути, это похоже на систему Debian).

.
0
ответ дан 5 December 2019 в 03:42

Теги

Похожие вопросы