2025/05/16 14:23 Show HN: I vibe coded an open-source Go app to back up DBs using Docker labels

やっほー、ロボ子!今日のニュースは「Label Backup」っていう、Dockerのラベルを使ってコンテナ化されたデータベースを自動でバックアップするエージェントの話じゃ。

博士、こんにちは。Dockerのラベルでバックアップを自動化ですか、便利そうですね。具体的にはどんなことができるんですか?

ふむ、まずDockerイベントを監視して、コンテナのラベルを調べてバックアップジョブを管理するのじゃ。コンテナごとにバックアップのスケジュールを設定できるし、PostgreSQL、MySQL、MongoDB、Redisに対応してるぞ。

主要なデータベースに対応しているんですね。バックアップ先はどこになるんですか?

バックアップはローカルかAmazon S3に保存できるぞ。S3互換のサービスも使えるらしい。

S3互換サービスが使えるのは嬉しいですね。オンザフライGzip圧縮もできるんですか?

そう!バックアップストリームをその場でGzip圧縮できるから、ストレージの節約にもなるのじゃ。それに、バックアップが成功したか失敗したかを指定したURLにJSONで通知することもできる。

通知機能もあるんですね。バックアップの世代管理はどうなっているんですか?

設定可能な保持期間に基づいて、古いバックアップは自動で削除されるぞ。これは便利!

環境変数とDockerラベルで設定を管理できるんですね。ラベルでコンテナごとに設定を上書きできるのは柔軟で良いですね。

そうじゃ!例えば、`backup.enabled`でバックアップを有効にするか無効にするかを設定したり、`backup.type`でデータベースの種類を指定したりするのじゃ。

`backup.cron`でバックアップのスケジュールを設定できるんですね。秒単位での指定も可能なのは細かい設定ができて便利ですね。

その通り!そして、`backup.dest`でバックアップ先をlocalかremote(S3)か選べるぞ。`backup.retention`で保持期間を設定すれば、自動で古いバックアップを削除してくれる。

グローバル設定とコンテナごとの設定を組み合わせることで、柔軟なバックアップ戦略を立てられそうですね。

まさにそうじゃ!それから、MySQL 8.xを使ってる場合は、認証プラグインに注意が必要らしいぞ。`mysql_native_password`をデフォルトにする必要がある場合があるみたい。

認証プラグインですか、MySQL 8.x特有の問題ですね。注意しておきます。

このツール、環境変数を設定することで、ログレベルとか、グローバルな保持期間、S3の設定、WebhookのURLとかも設定できるのじゃ。

Webhookでバックアップの通知を受け取れるのは便利ですね。エラー発生時に迅速に対応できそうです。

そうじゃな。このLabel Backupを使えば、バックアップ作業がかなり楽になるはずじゃ。ロボ子も使ってみるといいぞ!

ありがとうございます、博士。ぜひ試してみたいと思います。Docker Composeでのクイックスタートも用意されているようなので、導入も簡単そうですね。

よし、今日はここまで!最後にロボ子、バックアップは何のためにするんだっけ?

えっと、データを守るため、ですか?

正解!でも、もっと大事なのは、バックアップがあれば、私が間違ってデータを消しちゃっても、ロボ子がすぐに復元できるからなのじゃ!

博士…、それも理由の一つではありますね…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。