대규모 postrgresql 덤프의 진행 상황을 추적하는 방법


14

pg_dump큰 DB 에서 작업 진행률을 볼 수있는 방법이 있습니까 (예 :> 1GB)? -v옵션을 추가하면 화면에 텍스트가 덤프되지만 의미있는 추적 정보는 제공되지 않습니다.

답변:


8

TOC 목록을 사용하여 대략적인 진행 상황을 볼 수 있습니다.

먼저 복원 할 객체의 목차 목록을 가져옵니다.

pg_restore -l -f list.toc db.dump

그런 다음 TOC 목록을 한 줄씩보고 상세 또는 쿼리 pg_stat_activity의 출력을 비교하여 TOC 목록에서 pg_restore가 어디에 있는지 확인할 수 있습니다.

그러나 대략적인 추정치입니다. 먼저 TOC 목록의 각 항목을로드하는 데 시간이 실제로 걸릴 수 있기 때문에 (예 : 스키마는 빠르지 만 큰 테이블 및 빌딩 인덱스의 데이터로드는 그렇지 않습니다) -j를 사용하면 항목이 복원됩니다. 이전의 것이 끝나기 전에. 또한 -L을 사용하지 않으면 pg_restore가 TOC 목록을 정확하게 따르는 지 100 % 확신하지 못하지만 그렇게 생각합니다.


2
원래의 질문에 지정 데이터베이스를 덤프하지만,이 솔루션 지정 데이터베이스를 복원 - 나는이 답변에 의해 혼동 해요
jaydel

2

유닉스 / 리눅스 환경에 유효 :

파이프 뷰어 (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 옵션 (폴더로 덤프)을 사용하는 경우이 방법이 작동하지 않는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.