dbgate-pg-dumper: pg_dumpなしのPostgreSQLバックアップ
Published: 2026-08-07 | Stela Augustínová
PostgreSQLのバックアップを作成するには、通常pg_dumpコマンドラインツールが必要です。これは別途インストールし、システムパス上で利用可能にし、PostgreSQLサーバーと互換性を持たせる必要があります。これにより、特にデスクトップアプリケーションやDockerコンテナでは、バックアップのセットアップがより難しくなることがあります。
これをより簡単にするために、私たちはdbgate-pg-dumperを開発しました。これはTypeScriptで書かれたPostgreSQLバックアップ・リストアエンジンで、DbGateや他のNode.jsアプリケーション内で直接実行されます。外部のpg_dumpやpsqlプロセスは必要ありません。
DbGateに組み込まれたPostgreSQLバックアップ
DbGate Communityは、組み込みのPostgreSQLバックアップ・リストアオプションとしてdbgate-pg-dumperを使用しています。追加のPostgreSQLツールをインストールしなくても、DbGateのインターフェースからプレーンSQL形式のバックアップを作成できます。
このダンパーには、データベースのスキーマとテーブルデータの両方が含まれます。テーブル、カラム、インデックス、制約、シーケンス、ビュー、関数、トリガー、拡張機能、コメント、所有権、権限といった、一般的なPostgreSQLオブジェクトを理解します。
DbGate Premiumでは、個々のテーブルの選択や対象のPostgreSQLバージョンの選択など、さらに細かい制御が可能です。
大規模データベースにも対応
このダンパーは、データベース全体をメモリに読み込むことはありません。テーブルの行は徐々に読み書きされるため、同じ処理で小規模なデータベースから大量のデータを含むテーブルまで対応できます。
デフォルトの出力形式は、PostgreSQLの効率的なCOPY形式を使用します。より読みやすい、あるいはポータブルなSQLファイルが必要な場合は、INSERT文やカラムを意識したINSERT文も利用できます。
バックアップ中、DbGateは現在のフェーズ、処理済みのテーブル、行数、警告、エラーを表示できます。また、この操作は安全にキャンセルすることもできます。
一貫性があり互換性のあるバックアップ
デフォルトでは、完全なバックアップは1つの物理PostgreSQL接続を使用し、1つの読み取り専用のリピータブルリード・トランザクション内でスキーマとテーブルデータを読み取ります。これにより一貫したMVCCスナップショットが提供され、データベースが変更されている間にスキーマとテーブルデータが異なる時点で観測されることを防ぎます。この保証は、トランザクションが無効化されている場合には適用されません。既存のトランザクションを使用する場合、その分離レベルは呼び出し元によって制御されます。
対象のPostgreSQLバージョンが選択されている場合、ダンパーはエクスポートされる機能がそのバージョンでサポートされているかどうかを確認します。互換性のない項目がある場合、選択した設定に応じて明確な警告を表示するか、操作を停止します。これは、異なるPostgreSQLバージョン間でデータベースを移行する際に役立ちます。
プレーンSQLによるリストア
dbgate-pg-dumperは、自身が作成したSQLファイルをリストアできます。また、pg_dump --format=plainで生成された互換性のあるプレーンSQL出力を読み取ることもできます。
リストアは段階的に実行され、完了した操作とリストアされた行数を報告します。PostgreSQLの関数本体、コメント、引用識別子、COPY ... FROM STDINデータブロックを正しく処理します。
現在のリストアワークフローは、UTF-8のプレーンSQLファイルを対象としています。PostgreSQLのカスタム形式、tar形式、ディレクトリアーカイブ形式は、このリーダーではサポートされていません。
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ファイルとしても利用可能なままです。