Назад | Перейти на главную страницу

Загрузка большого дампа базы данных в PostgreSQL с помощью cat

У меня есть пара очень больших (~ 17 ГБ) дампов базы данных, которые я хочу загрузить в postgresql 9.3. После установки пакетов базы данных, более или менее изучив их использование, и немного поигрался на различных страницах StackExchange (особенно этот вопрос), похоже, правильная команда для меня выглядит примерно так:

cat mydb.pgdump | psql mydb

из-за формата дампа. На моей машине 16 ГБ ОЗУ, и я не знаком с cat но я знаю, что моя оперативная память исчерпана на 99% и загрузка базы данных требует времени. Моя машина не перестает отвечать на запросы до зависания; Я могу запускать другие команды в других окнах терминала и выполнять их с разумной скоростью, но мне интересно, cat это лучший способ передать файл или что-то еще более эффективное? Меня беспокоит то, что возможно cat может использовать всю оперативную память, поэтому с базой данных не с чем работать, что снижает ее производительность. Но я новичок в подобных проблемах с оперативной памятью и не знаю, ни о чем ли не беспокоюсь.

Теперь, когда я думаю об этом, мне кажется, что это скорее вопрос о cat и использование его памяти, чем что-либо еще. Если есть более подходящий форум для этого вопроса, пожалуйста, дайте мне знать. Спасибо!

Меня беспокоит то, что, возможно, cat использует всю оперативную память, поэтому базе данных не с чем работать, что снижает ее производительность.

Это не так. cat просто передает данные от ввода к выводу.

В любом случае здесь нет необходимости, используйте

psql dbname < mydb.pgdump

моя оперативная память исчерпана на 99%, и загрузка базы данных занимает некоторое время.

Как вы измеряете «истощение на 99%»? Мне интересно, если вы не можете исключить буферы / кеш. Показать вывод free -h (или если это не удается с ошибкой, free -m).

В общем, для более быстрого восстановления БД я рекомендую использовать нестандартный формат (-Fc) dump, затем с помощью параллельного pg_restore вместо того psql.