💾

【Databasus】PostgreSQLの反転術式

に公開

Databasus

https://github.com/RostislavDugin/postgresus

原本: Free, open source and self-hosted solution for automated PostgreSQL backups. With multiple storage options and notifications
翻訳: 無料・オープンソースで、セルフホスティング可能な自動 PostgreSQL バックアップのソリューション。複数のストレージオプションと通知機能を備える。

databasus/databasusはPostgreSQL用自動バックアップツールで、以下の機能を揃えています。

1. バックアップ予約(Scheduled Backups)

特定の時間を指定してバックアップを実行でき、バランスの取れた圧縮方式により4〜8倍のストレージ節約が可能です。

2. 複数のストレージ対応(Multiple Storage Destinations)

ローカルストレージのほか、S3、R2、Google Driveなどのクラウドストレージにも対応しています。
セキュリティオプションもストレージに応じて提供します。

3. スマート通知

Email, Telegram, Slack, Discord など、いろんなチャネルを通じて成功・失敗の通知をサポートします。

詳細は Postgresus feature ドキュメントを参照してください。

Postgresus インストール

自動インストールスクリプトも提供されていますが、この記事ではDocker Composeを使用してインストールしました。

services:
  my-postgres:
    container_name: my-postgres
    image: postgres:18
    # more options
  my-databasus:
    container_name: my-databasus
    image: databasus/databasus:latest
    ports:
      - "4005:4005" # WebUIにアクセスするためのポートー
    volumes:
      - ./databasus/data:/databasus-data # バックアップデータのヴォリュームマウント
    depends_on:
      - my-postgres # PostgreSQL 依存性

今回のインストールでは PostgreSQL 18を使用しました。
PostgreSQLコンテナを宣言する際、WebUIにアクセスするためのポートバックアップデータのボリュームマウントを設定します。

Databasus 初期設定

1. Databasus WebUI アクセス

WebUIにアクセスするため、ブラウザでhttp://yourhost:4005/にアクセスします。

Sign up admin.png
Sign up admin

ブラウザ画面の案内に従ってadminアカウントを生成します。

[注意]: ここにで確認できるpasswordは避けてください。

2. Workspace 生成

Create workspace.png
Create workspace

adminアカウント設定直後に表示される Create workspace ボタンをクリックすれば Workspaceを生成できます。

DatabasusにおけるWorkspaceとは、データベース、ストレージ、通知設定などを管理する単位です。

3. バックアップ設定

Add database for backup.png

つぎに、バックアップする対象(PostgreSQL)を設定します。先ほどDocker Composeで宣言したPostgreSQLコンテナを指定します。

設定後にはバックアップ作業専用のread-onlyユーザーの生成可否を尋ねられます。これは選択事項であり、この記事ではスキップします。

Add backup options.png
Add backup options

バックアップ対象の設定が終わったら、バックアップ関連の設定を進めます。私は次のように設定しました。

  • 毎日午前4時に実行
  • バックアップ失敗時は3回再試行
  • 復元処理時は CPUを1つ使用
  • バックアップは1ヶ月間保持
  • ローカルストレージ使用(セキュリティオプションはオフ)
  • バックアップ成否を通知

4. 通知設定

Add notifier.png
Add notifier

最後に、Notifierを設定します。私はDiscord Webhookを通じて通知を受け取るように設定しました(そのほかにもSlack, Telegramなど、多様なベンダーを使用できます)。

Discord.png

Postgres backups.png
Postgres backups

設定が完了すると、上記のようにバックアップが一度実行され、バックアップリストに追加されます。
削除、復元、ダウンロードを簡単に実行でき、Make backup right nowボタンをクリックすればバックアップをすぐに実行できます。

結果

$ docker stats my-databasus
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT
............   my-databasus   0.00%     77.63MiB / ...

idle状態でのCPU/メモリの使用料です。Databasusはかなり軽量なようです。

├── docker-compose.yml
└── databasus
    └── data
        ├── backups
        │   └── ...
        ├── pgdata
        ├── secret.key
        └── temp

バックアップファイルも上記のように正常に確認できます。

まとめ

もうデータは安全です!

Discussion