Копировать базу данных PostgreSQL с удаленного сервера

11

Когда я использовал MySQL, я мог запустить команду SSH на моем сервере и скопировать базу данных на мой локальный компьютер.

ssh -t удаленный сервер 'mysqldump --compress -u dbuser --password = "пароль" db_name' | / usr / local / mysql / bin / mysql -u root --password = "пароль" local_db_name

Как я могу сделать то же самое с PostgreSQL?

wyred
источник

Ответы:

15

Если сервер БД принимает соединения с базой данных с вашего хоста (обычно через порт 5432), вам не нужно использовать SSH. В этом случае вам необходимо сделать следующее:

pg_dump -h your_db_host -U db_user -C db_name | psql -h localhost -d local_db_name -U local_db_user

Если вы можете подключиться к своей базе данных только с самого хоста, вы должны добавить логику SSH из вашего примера MySQL.

С помощью -Cвы получите CREATE DATABASEкоманду в начале дампа, поэтому вам не нужно создавать ее самостоятельно. Приведенная выше команда запросит пароль дважды, если вы не сохраните его в файле .pgpass (при условии, что вы используете Linux / Unix). Кроме того, локальное соединение может отличаться, если ваша БД не слушает TCP (в этом случае просто пропустите -h localhostчасть).

Для получения дополнительной информации и опций см. Документацию pg_dump .

Dezso
источник
означает, что вам нужно иметь один и тот же пароль на обоих серверах, верно?
Флориан Хейгл
1
@FlorianHeigl Нет.
Dezso
Для тех, кто читает это в будущем: введите пароль для первой (удаленной) БД, нажмите клавишу ввода, введите пароль для пользователя вашего локального БД, нажмите клавишу ввода. Меня также смутил тот факт, что он запрашивал оба пароля (и что UNIX никогда не показывает пароли, когда вы их связываете).
АлександрH