У меня временная потребность в базе данных postgresql на 180 ГБ. В целях экономии у меня есть это на дешевом дисковом сервере 40 ГБ, и я хочу смонтировать том 200 ГБ в каталог данных postgresql.
Моя проблема: после остановки postgresql смонтируйте том, скопируйте содержимое, обновите postgresql.conf, запустите postgresql, он перестает прослушивать 5432
Мой вопрос: Почему это происходит?
Мой порядок операций:
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
затем
Скопировать содержимое '/var/lib/postgresql/9.5/ main / 'в новый том' / mnt / something '
Отредактируйте 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' # файл конфигурации идентификатора
# (изменение требует перезагрузки)
Запустите postgresql
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
, но я застрял.
5) Скопируйте содержимое "/var/lib/postgresql/9.5/main/" в новый том. Наиболее правдоподобной причиной, по которой PostgreSQL терпит неудачу сразу после запуска, является то, что на этом этапе не сохраняются точные разрешения/владельцы файлов и каталогов, которые копируются. Если вы используете
cp
, обязательно добавьте опцию-p
.7) Запустите netstat postgresql
8) и обнаружите, что postgresql больше не прослушивает 5432
Вы, кажется, ищете проблему в сети, но не прослушивание порта 5432, скорее всего, это связано с тем, что PostgreSQL выходит сразу же по ошибке после шага #7. Как упоминалось в комментариях, проверьте журналы Postgresql: причина, по которой он не запускается, должна быть явно написана там. Обычно журналы находятся в
./var/log/postgresql/
(учитывая упомянутые пути, это похоже на систему Debian).