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.