PostgreSQL 9.0.13 делает pg_restore, но нет доказательств использования дискового пространства

Я пытаюсь восстановить pg_dump, полученный с помощью этой команды с другого сервера.

sudo -u postgres pg_dump --verbose --format=custom --file=pg-backup.sql -U postgres salesDB

После того, как я скопировал файл pg-backup.sql, я пытаюсь восстановить его с помощью этой команды.

sudo -u postgres pg_restore --verbose --jobs=`nproc` -f pg-backup.sql

Файл pg-backup.sql составляет 13 ГБ. Pg-restore работает 4 часа, прокручивая данные на моем экране все время. Нет ошибок

Но когда я выполняю это утверждение из сессии PSQL

SELECT pg_size_pretty(pg_database_size('salesDB'));

Я получаю 5377 кБ в размере. ЧТО? Это должно быть по крайней мере 1 ГБ к настоящему времени. Я полностью потерян. Все эти данные прокручиваются на моем экране, и я не могу доказать, что они куда-то идут. Нет использования диска.

Помогите

3 ответа

Попробуйте это без флага "-f" в команде pg_restore. Кроме того, вы можете попытаться создать пустую базу данных salesdb и передать "-d salesdb". Обратите внимание, что имя БД будет свернуто в нижний регистр, если оно не было создано в двойных кавычках.

Добавлены примеры шагов, чтобы показать, что размер БД увеличивается в процессе восстановления

-- sample pg_dump command
pg_dump -f testdb.out -Fc src_test_db

-- create the db to restore into
createdb sometestdb

-- restore with 4 parallel jobs, from the "testdb.out" file, into the db "sometestdb"
time pg_restore --dbname=sometestdb --jobs=4 testdb.out

-- In another window, every few seconds, you can see the db growing
psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
 pg_size_pretty 
----------------
 4920 MB

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
 pg_size_pretty 
----------------
 4920 MB

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
 pg_size_pretty 
----------------
 5028 MB

psql -d postgres -c "select pg_size_pretty(pg_database_size('sometestdb'))"
 pg_size_pretty 
----------------
 5371 MB

РАЗРЕШЕНО - синтаксическая ошибка -f Насколько я могу судить, параметр (выходной файл) бесполезен. Мне нужно было указать файл для pg_restore использовать без какого-либо флага, только как последний элемент в командной строке. -d salesdb параметр был нужен. У меня 16 процессоров, поэтому я установил -j 15Это казалось очень полезным. моя последняя командная строка была

sudo -u postgres pg_restore -d salesdb --jobs=15 backup10.sql

Тогда я получаю очень быстрое увеличение размера с pg_database_size функция.

Он растет так, как должен.

Похоже, ты мне рассказываешь pg_restore выводить содержимое дампа на дисплей, а не восстанавливать его в базе данных. Вы указали --dbname?

Лично я считаю pg_restoreСинтаксис командной строки не особенно интуитивен, и если я когда-нибудь найду время, это одна из вещей, которую я бы хотел улучшить в Pg.

Другие вопросы по тегам