압축된 덤프의 압축을 풀고 psql을 통해 가져옵니다.

압축된 덤프의 압축을 풀고 psql을 통해 가져옵니다.

나는 거대한 데이터베이스를 덤프하고 덤프를 압축하여 완료될 때까지 몇 시간을 기다릴 필요가 없도록 하려고 합니다.

다음을 통해 데이터베이스를 덤프합니다.

 pg_dump -Fc -U -v | gzip > db$(date +%d-%m-%y_%H-%M).tar.gz

이로 인해 압축된 tar 파일이 남게 됩니다. 압축을 풀고 .tar 파일만 가져오고 싶습니다.

tar -xvf xxx.tar.gz

이로 인해 오류 메시지가 표시되었습니다.이것은 tar 아카이브 파일처럼 보이지 않습니다.

내 목표는 psql을 통해 가져오는 것입니다. 내가 뭘 잘못하고 있는지 이해가 안 돼요 -에 따르면포스트그레스 문서덤프하는 동안 -Fc를 사용하여 원하는 형식으로 덤프할 수 있습니까? 감사해요

답변1

압축된 tar 파일이 남습니다.

아니요. 당신은 -Fc및에 특정한 "사용자 정의"파일 형식을 제공하는을 사용하고 있습니다 . 이것은 tar가 아니므로 tar 파일을 압축하기 위해 gzip 호출을 사용하지 않습니다.pg_dumppg_restore

또한,pg_dump 문서지적했다:

pg_restore에 대한 입력에 적합한 사용자 정의 형식 아카이브를 출력합니다. 카탈로그 출력 형식과 함께 복구 중에 보관된 항목을 수동으로 선택하고 순서를 변경할 수 있으므로 가장 유연한 출력 형식입니다.이 형식은 기본적으로 압축되어 있습니다.

gzip이 이미 압축된 콘텐츠를 압축하려고 시도합니다. 이것은 시간 낭비 외에는 별로 도움이 되지 않습니다.

실제로 아래의 --compress=0..9동일한 문서에서는 다음과 같이 설명합니다.

사용할 압축 수준을 지정합니다. 0은 압축이 없음을 의미합니다. 사용자 정의 및 카탈로그 아카이브 형식의 경우 개별 테이블 데이터 세그먼트의 압축을 지정하며 기본값은 중간 수준의 압축입니다. 일반 텍스트 출력의 경우 0이 아닌 압축 수준을 설정하면 전체 출력 파일이 압축됩니다.마치 gzip을 통해 제공되는 것처럼;그러나 기본적으로 압축되지는 않습니다. tar 아카이브 형식은 현재 압축을 전혀 지원하지 않습니다.

따라서 이미 gzip을 사용하고 있습니다! gzip을 사용하여 gzip으로 압축된 콘텐츠의 크기를 줄일 수 없습니다.

당신이 할 수 있는 것은 사용하는 것입니다

pg_dump -Fc -Z0 -U -v | zstd -5 > db$(date +%d-%m-%y_%H-%M).custom.zst
#        ^  ^            ^    ^
#        |  |            |    \----- zstd compression level 5:
#        |  |            |           better than gzip --best, 
#        |  |            |           but much, much faster
#        |  |            \-------- use the zstd compressor
#        |  \-------------------- don't compress yourself                  
#        \--------------------- custom format

왜냐면 솔직히 gzip그렇거든요매우더 이상 사용되지 않습니다. 느리고 확장성이 좋지 않으며 압축률이 매우 낮습니다. 더 나은 대안이 많이 있지만 zstd광범위한 속도/압축 비율 절충을 허용하고 매우 적극적으로 유지 관리되며 모든 플랫폼에서 사용할 수 있습니다.

경고: 아래는 가벼운 호언장담입니다!
-5압축 측면에서 다음보다 높은 압축 설정을 사용할 수 있습니다. 그러나 높을수록 압축 속도가 느려집니다. 시간과 공간 간의 절충을 시도할지 여부에 따라 다릅니다 -18. 저는 종종 를 선택합니다 -11. zstd이는 일반 데이터에 비해 약 2/3 빠르지만 gzip --best10% 더 작은 파일을 생성하는 경향이 있습니다. 압축 범위 대 속도 절충( 또는 기껏 zstd해야 유휴 CPU 시간이 너무 많고 압축 비율을 0.1% 더 높이려는 경우 )은 gzip보다 더 세밀하며 최신 시스템에서 더 유용합니다 . gzip 기반)은 32kB 창 크기로 제한됩니다. 왜냐하면 64kB 이상의 RAM을 가진 사람이 누구입니까? 모든 사람. 2022년에는 내 오븐에도 64kB 이상의 RAM이 탑재됩니다. 따라서 zstd는 매우 작은 사전 작성 창을 사용하려고 시도하지 않습니다. 이것이 압축이 zlib/gzip보다 나은 간단한 이유 중 하나입니다.-1-18-22

관련 정보