як відстежувати хід великого дампського postrgresql


14

Чи є спосіб побачити хід pg_dumpоперації на великому db (тобто> 1 ГБ)? додаючи -vопцію, просто скидає текст на екран, але не дає мені багато змістовної інформації відстеження.

Відповіді:


8

Ви можете побачити приблизний прогрес за допомогою списку TOC.

Спочатку отримайте список об'єктів, що підлягають відновленню:

pg_restore -l -f list.toc db.dump

Потім ви можете побачити рядок списку TOC і порівняти висновок багатослівного або запиту pg_stat_activity, щоб побачити, де в списку TOC знаходиться pg_restore.

Це лише приблизна оцінка. По-перше, тому що кожен елемент зі списку TOC може зайняти дійсно різний час для завантаження (наприклад, схеми швидкі, але завантаження даних великих таблиць та індексів побудови не є), і якщо ви використовуєте -j, вам буде відновлено елемент до того, як закінчився попередній. Крім того, я не впевнений на 100%, якщо pg_restore точно слідує за списком TOC, якщо ви не використовуєте -L, але я думаю, що це так.


2
Мене бентежить ця відповідь - оригінальне запитання вказує демпінг бази даних, але це рішення визначає відновлення бази даних
jaydel

2

Дійсно для середовищ Unix / Linux:

Утиліта Pipe Viewer (pv) може бути використана для відстеження прогресу резервного копіювання. Pv оживляє вашу оболонку з деталями про минулий час та перенесені байти.

Нижче наводиться приклад скидання за допомогою утилітів pv та split для збереження великих дамп-файлів невеликими шматками. Можливо, буде зручно перенести його пізніше в інше місце.

# dump the PREDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=pre-data  -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".PREDATA.sql"

# dump the POSTDATA in clear text into a .PREDATA.SQL text file
pg_dump -s -o --section=post-data -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".POSTDATA.sql"

# dump the DATA into the .DATA.dump compressed (binary) file
pg_dump -Fc   --section=data      -n $schemaname $DatabaseConnString | pv | split -d -b $chunksize - $backuppath/$backupfilename".DATA.dump"

Недолік - такий підхід не працює, якщо використовується опція pg_dump -Fd (дамп у папку).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.