Восстановление базы данных postgres, которую я сбросил с удаленного - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь сбросить и восстановить базу данных Postgres, размещенную на AWS бастионе, используя psql. Для этого мне нужно открыть туннель S SH.

Я открываю туннель следующим образом: ssh -v -A admin@bastion.my.company.name -L 15432:databasename.amazonaws.com:5432 -N

Затем сбросьте его с помощью: pg_dump -v -h 0.0.0.0 -p 15432 -U postgres -d databasename --clean -T tablesINeed > ~/pgdumps/databasenamedump.sql

Пока все хорошо, я могу прыгнуть через мой туннель. Затем я закрываю туннель и пытаюсь восстановить: psql -h 0.0.0.0 -p 5432 -U postgres -d databasename < ~/pgdumps/databasenamedump.sql

Но я получаю:

psql: ошибка: не удалось подключиться к серверу: не удалось подключиться к серверу: Отказ в соединении Сервер работает на хосте "0.0.0.0" и принимает соединения TCP / IP через порт 5432?

Как это? Я, вероятно, не понимаю концепцию dump / restore? Как только у меня есть дамп, я просто хочу запустить его локальный экземпляр. Я должен использовать 15432 (порт, который я открыл для туннеля s sh) для восстановления? Я боюсь пробовать, так как это производственная база данных. Я пытался просмотреть документацию psql, но не нашел похожий сценарий

Спасибо за разъяснения

1 Ответ

0 голосов
/ 04 марта 2020

Как только у меня есть дамп, я просто хочу запустить его локальный экземпляр. Я должен использовать 15432 (порт, который я открыл для туннеля s sh) для восстановления? Я боюсь пробовать, так как это производственная база данных.

Вы правильно боитесь. Это восстановит ту же базу данных, из которой вы выгрузили, а это не то, чего вы хотите. Изменения в работе, поскольку дамп может быть потерян, поскольку вы указали --clean для pg_dump.

pg_restore не создает экземпляр базы данных, он просто восстанавливает в уже работающий экземпляр. Поэтому вы должны начать с initdb (или эквивалентного) для создания такого экземпляра и pg_ctl start (или эквивалентного) для его запуска. Если, конечно, вы уже не сделали эти вещи, но полученное сообщение об ошибке говорит о том, что вы этого не сделали или не сделали правильно.

Я пытался просмотреть документацию psql, но не сделал Не найти похожий сценарий

psql - это просто «клиентский» инструмент командной строки для подключения к базе данных, он не является самим программным обеспечением базы данных, поэтому его документация не будет иметь большого значения для Вы.

Возможно, вам придется сделать шаг назад и начать с начало .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...