dbgate-pg-dumper: pg_dump 없이 하는 PostgreSQL 백업
Published: 2026-08-07 | Stela Augustínová
PostgreSQL 백업을 생성하려면 보통 pg_dump 명령줄 도구가 필요합니다. 이 도구는 별도로 설치해야 하고, 시스템 경로에서 사용할 수 있어야 하며, PostgreSQL 서버와 호환되어야 합니다. 이는 특히 데스크톱 애플리케이션과 Docker 컨테이너에서 백업 설정을 더 어렵게 만들 수 있습니다.
이를 더 쉽게 만들기 위해 dbgate-pg-dumper를 만들었습니다. 이는 DbGate나 다른 Node.js 애플리케이션 내부에서 직접 실행되는 TypeScript로 작성된 PostgreSQL 백업 및 복원 엔진입니다. 외부 pg_dump나 psql 프로세스가 필요하지 않습니다.
DbGate에 내장된 PostgreSQL 백업
DbGate Community는 내장 PostgreSQL 백업 및 복원 옵션으로 dbgate-pg-dumper를 사용합니다. 추가 PostgreSQL 도구를 설치하지 않고도 DbGate 인터페이스에서 일반 SQL 백업을 생성할 수 있습니다.
이 덤퍼는 데이터베이스 스키마와 테이블 데이터를 모두 포함합니다. 테이블, 열, 인덱스, 제약 조건, 시퀀스, 뷰, 함수, 트리거, 확장, 주석, 소유권, 권한과 같은 일반적인 PostgreSQL 객체를 이해합니다.
DbGate Premium은 개별 테이블을 선택하고 대상 PostgreSQL 버전을 선택하는 기능을 포함해 더 많은 제어 기능을 추가합니다.
대용량 데이터베이스를 위한 설계
이 덤퍼는 전체 데이터베이스를 메모리에 로드하지 않습니다. 테이블 행은 점진적으로 읽고 쓰기 때문에 동일한 프로세스가 소규모 데이터베이스와 대량의 데이터를 포함하는 테이블을 모두 처리할 수 있습니다.
기본 출력은 PostgreSQL의 효율적인 COPY 형식을 사용합니다. 더 읽기 쉽거나 이동성이 좋은 SQL 파일을 선호하는 경우 INSERT 및 열을 인식하는 INSERT 문도 사용할 수 있습니다.
백업 중에 DbGate는 현재 단계, 처리된 테이블, 행 수, 경고 및 오류를 표시할 수 있습니다. 작업은 안전하게 취소할 수도 있습니다.
일관되고 호환되는 백업
기본적으로 전체 백업은 하나의 물리적 PostgreSQL 연결을 사용하며, 읽기 전용의 repeatable-read 트랜잭션 하나 안에서 스키마와 테이블 데이터를 읽습니다. 이는 일관된 MVCC 스냅숏을 제공하여 데이터베이스가 변경되는 동안 스키마와 테이블 데이터가 서로 다른 시점에 관찰되는 것을 방지합니다. 이 보장은 트랜잭션이 비활성화된 경우에는 적용되지 않으며, 기존 트랜잭션을 사용하는 경우 격리 수준은 호출자가 제어합니다.
대상 PostgreSQL 버전을 선택하면 덤퍼는 내보낸 기능이 해당 버전에서 지원되는지 확인합니다. 호환되지 않는 항목이 있으면 선택한 설정에 따라 명확한 경고를 표시하거나 작업을 중지합니다. 이는 서로 다른 PostgreSQL 버전 간에 데이터베이스를 이동할 때 유용합니다.
일반 SQL 복원
dbgate-pg-dumper는 자신이 생성한 SQL 파일을 복원할 수 있습니다. 또한 pg_dump --format=plain으로 생성된 호환 가능한 일반 SQL 출력도 읽을 수 있습니다.
복원은 점진적으로 실행되며 완료된 작업과 복원된 행을 보고합니다. PostgreSQL 함수 본문, 주석, 인용된 식별자, COPY ... FROM STDIN 데이터 블록을 올바르게 처리합니다.
현재 복원 워크플로는 UTF-8 일반 SQL 파일에 초점을 맞추고 있습니다. PostgreSQL의 custom, tar, directory 아카이브 형식은 이 리더에서 지원되지 않습니다.
npm 패키지로도 제공
DbGate를 위해 만들어졌지만, 이 덤퍼는 애플리케이션의 나머지 부분과는 독립적입니다. Node.js 개발자는 공개된 dbgate-pg-dumper 패키지를 설치하여 자신의 프로젝트에서 백업 및 복원 API를 사용할 수 있습니다.
이 패키지는 호스팅형 PostgreSQL 데이터베이스에서도 작동합니다. 예를 들어 Node.js 애플리케이션에서 dbgate-pg-dumper를 직접 사용하여 Neon 데이터베이스 백업을 생성하고, pg_dump를 설치하지 않고도 스키마와 데이터를 로컬 일반 SQL 파일로 저장할 수 있습니다.
버전 1.0.0은 ES 모듈과 CommonJS를 지원하며 Node.js 20 이상이 필요합니다. 널리 사용되는 pg 드라이버용 어댑터가 포함되어 있으며, 핵심 API는 다른 PostgreSQL 클라이언트에도 연결할 수 있습니다.
dbgate-pg-dumper를 사용하면 PostgreSQL 백업을 데스크톱, 서버, Docker 환경에서 더 쉽게 실행할 수 있으며, 동시에 일반적이고 이동 가능한 SQL 파일 형태로도 계속 사용할 수 있습니다.