バックアップと復元
データベースと利用者のデータ(ファイル・レイク・カスタム MCP・監査ログの退避)を 1 つの tar ファイルにまとめて保存し、必要な時にその状態へ戻す。管理画面からもコマンドからも操作できる。どちらも同じ形式のファイルを作る。コマンドだけは --with-env で .env も含められる(.env も含める)。
バックアップの置き場
バックアップはサーバー上の BACKUP_DIR に作られる。今の置き場は [登録管理] > [バックアップ / リストア] の「保存先」で確認できる。
| 環境 | 既定の置き場 |
|---|---|
| Linux / macOS(インストーラ) | ~/.local/db/backups |
| Linux(deb / rpm) | /root/.local/db/backups |
| Docker | compose を置いたディレクトリの data/backups |
- 別のディスクに置く時は、
.envにBACKUP_DIR=<ディレクトリ>を書いて再起動する - ファイルの保存先(
FILES_DIR)などデータのフォルダの中には置けない。復元の時に一緒に置き換わってしまうため - 置き場はサーバーと同じディスクにある。障害に備えて、ダウンロードするかコピーして別の場所にも保管する
画面でバックアップを作る
管理画面からバックアップを作り、必要なら手元に保存する。
- 管理画面の [登録管理] タブを開く。
- 「バックアップ / リストア」 の 「バックアップを作成」 を押す。一覧に「作成中」の行が出る。データ量によっては数分かかる。
- 作り終えると、行にファイル名と 「ダウンロード」 「復元」 「削除」 が出る。
- 手元に保存する時は 「ダウンロード」 を押す。ブラウザがファイルを直接保存する。
ダウンロード用のリンクは 1 回だけ、短い時間だけ使える。もう一度落とす時は、ボタンを押し直す。
画面で作るバックアップには .env は入らない。.env も含める時はコマンドで作る。
コマンドでバックアップを作る
サーバーにログインして実行する。サーバーは動かしたままでよい。
BACKUP_DIR に作る。
db backup
置き場を指定して作る。
db backup --dir /mnt/backup
終わると、作ったファイルのパスが表示される。定期的に取る時は、cron などから db backup を実行する。
別の機のバックアップを取り込む
別のサーバーで作ったバックアップから戻す時は、先にこの機の置き場へ入れる。
- 画面から: 「ファイルから取り込む」 でファイルを選ぶ。DigitalBase のバックアップでないファイルは取り込まない
- コマンドで: ファイルを
BACKUP_DIRにコピーする
リバースプロキシ(nginx など)を通して画面から取り込む時は、プロキシのアップロード上限(client_max_body_size など)をバックアップのサイズより大きくする。上限を超えると取り込みに失敗する。
復元する
復元すると、データベースと利用者のデータはバックアップの時点の内容に置き換わり、今のデータは残らない。必要なら、先に今の状態のバックアップを作る。
画面から復元する(Linux の systemd で動く機)
一覧からバックアップを選んで戻す。
- 一覧で戻したいバックアップの 「復元」 を押す。
- 確認画面で 「復元」 を押す。サーバーが止まり、データを戻してから起動し直す。その間は画面につながらない。
- 数分待ってから、画面を開き直す。[登録管理] の「バックアップ / リストア」に結果が表示される。
- 失敗した時は「ログを表示」で原因を確認できる。
Docker や macOS など、systemd で動いていない機では画面から復元できない。コマンドで戻す。
コマンドで復元する
Linux(systemd で動く機) — db restore がサーバーを止め、戻してから起動し直す。
db restore ~/.local/db/backups/digitalbase-backup-20261024-030000.tar
macOS など systemd を使わない機 — サーバーを止めてから戻し、起動する。サーバーが動いている間は db restore は実行されない。
db stop
db restore ~/.local/db/backups/digitalbase-backup-20261024-030000.tar
db start
復元で起きること
- データベースは 1 つのまとまりとして置き換える。途中で失敗した時は何も変わらない
- 戻し先のデータベースに拡張
vector・pg_trgmが入っている必要がある。入っていない時は、何も変えずに止まる - データのフォルダは、今の中身と混ぜずに丸ごと置き換える
.envとライセンスは上書きしない
.env も含める
.env には接続先や鍵が入る。含める時はパスフレーズで暗号化する。
--with-env を付けてバックアップを作る。パスフレーズを聞かれるので入力する。
db backup --with-env
端末の無い所(cron など)から実行する時は、環境変数 DB_BACKUP_PASSPHRASE にパスフレーズを入れておく。
戻す時も --with-env を付け、同じパスフレーズを入力する。
db restore <ファイル> --with-env
.env は上書きされず、同じディレクトリに .env.restored として書き出される。
.env.restored の中身を確認し、.env と差し替えてから再起動する。
画面からの復元では .env は戻らない。
パスフレーズが無いと .env は取り出せない。パスフレーズはバックアップとは別の場所に保管する。
Docker の場合
バックアップは画面からか、次のコマンドで作る。
docker compose exec app uv run --no-sync python main.py backup
ファイルは compose を置いたディレクトリの data/backups/ にできる。
復元はコマンドで行う(コンテナは自分自身を止められないため)。
docker compose stop app
docker compose run --rm app uv run --no-sync python main.py restore /app/data/backups/<ファイル>
docker compose start app
Docker の .env は compose を置いたディレクトリにある。バックアップとは別に保管する。