У меня временная потребность в базе данных postgresql объемом 180 ГБ. В целях экономии у меня есть это на дешевом дисковом сервере 40 ГБ, и я хочу смонтировать том 200 ГБ в каталог данных postgresql.
Моя проблема: после того, как я остановил postgresql, смонтировал том, скопировал содержимое, обновил postgresql.conf, запустил postgresql, он перестает слушать 5432
Мой вопрос: почему это происходит?
Мой порядок действий:
netstat и посмотрите, что postgres прослушивает 5432 для любых удаленных подключений
root@foobar:/etc/postgresql/9.5/main# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 112 44384 25831/postgres
tcp 0 0 0.0.0.0:3451 0.0.0.0:* LISTEN 0 94839 15010/sshd
tcp6 0 0 :::5432 :::* LISTEN 112 44385 25831/postgres
tcp6 0 0 :::3451 :::* LISTEN 0 94848 15010/sshd
затем
Скопируйте содержимое '/var/lib/postgresql/9.5/main/' в новый том '/ mnt / something'
Отредактируйте postgresql.conf и измените "каталог данных" на новый том ..
data_directory = '/mnt/whatever' # use data in another directory
# (change requires restart)
hba_file = '/etc/postgresql/9.5/main/pg_hba.conf' # host-based authentication file
# (change requires restart)
ident_file = '/etc/postgresql/9.5/main/pg_ident.conf' # ident configuration file
# (change requires restart)
Запустить postgresql
netstat и обнаруживаем, что postgresql больше не слушает 5432
root@foobar:/# netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:3451 0.0.0.0:* LISTEN 0 94839 15010/sshd
tcp6 0 0 :::3451 :::* LISTEN 0 94848 15010/sshd
Сначала я подумал, что это что-то в postgresql.conf
что я испортил разрешение удаленных подключений, но после повторной сборки сервера несколько раз, проходящих через этот процесс, он определенно прослушивает 5432
полностью, пока я не смонтирую новый том.
Postgresql отлично работает удаленно, пока я не смонтирую том и не обновлю каталог данных в conf. Кроме того, он не будет слушать даже после того, как я отключу том и восстановлю резервную копию оригинала. postgresql.conf
. Мне кажется, что что-то делаю в маунте ломается.
Я установил правило, разрешающее 5432
в IPtables, но это не исправляет (и помните, удаленные соединения работают нормально до монтирования, поэтому я не думаю, что это брандмауэр).
Какие-либо предложения?
Я предполагаю, что это какой-то lsof
вещь, но я застрял.
5) Скопируйте содержимое '/var/lib/postgresql/9.5/main/' в новый том '/ mnt / something'
Наиболее вероятной причиной, по которой PostgreSQL после этого сразу же выходит из строя при запуске, является то, что на этом этапе не сохраняются точные разрешения / владельцы копируемых файлов и каталогов. Если вы используете cp
, обязательно добавьте -p
вариант.
7) Запустите postgresql
8) netstat и обнаружите, что postgresql больше не слушает 5432
Кажется, вы ищете проблему с сетью, но не слушаете порт 5432, скорее всего, из-за того, что PostgreSQL завершился сразу после ошибки после шага № 7. Как упоминалось в комментариях, проверьте журналы postgresql: причина, по которой он не запускается, должна быть явно написана там. Обычно журналы находятся в /var/log/postgresql/
(учитывая упомянутые пути, похоже, что это система Debian).