DigitalBase Docs

バックアップと復元

データベースと利用者のデータ(ファイル・レイク・カスタム MCP・監査ログの退避)を 1 つの tar ファイルにまとめて保存し、必要な時にその状態へ戻す。管理画面からもコマンドからも操作できる。どちらも同じ形式のファイルを作る。コマンドだけは --with-env で .env も含められる(.env も含める)。

対象:管理者必要権限:管理者ロール(画面)/ サーバー管理権限(コマンド)

バックアップの置き場

バックアップはサーバー上の BACKUP_DIR に作られる。今の置き場は [登録管理] > [バックアップ / リストア] の「保存先」で確認できる。

環境既定の置き場
Linux / macOS(インストーラ)~/.local/db/backups
Linux(deb / rpm)/root/.local/db/backups
Dockercompose を置いたディレクトリの data/backups
  • 別のディスクに置く時は、.env に BACKUP_DIR=<ディレクトリ> を書いて再起動する
  • ファイルの保存先(FILES_DIR)などデータのフォルダの中には置けない。復元の時に一緒に置き換わってしまうため
  • 置き場はサーバーと同じディスクにある。障害に備えて、ダウンロードするかコピーして別の場所にも保管する

画面でバックアップを作る

管理画面からバックアップを作り、必要なら手元に保存する。

  1. 管理画面の [登録管理] タブを開く。
  2. 「バックアップ / リストア」 の 「バックアップを作成」 を押す。一覧に「作成中」の行が出る。データ量によっては数分かかる。
  3. 作り終えると、行にファイル名と 「ダウンロード」 「復元」 「削除」 が出る。
  4. 手元に保存する時は 「ダウンロード」 を押す。ブラウザがファイルを直接保存する。

ダウンロード用のリンクは 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 で動く機)

一覧からバックアップを選んで戻す。

  1. 一覧で戻したいバックアップの 「復元」 を押す。
  2. 確認画面で 「復元」 を押す。サーバーが止まり、データを戻してから起動し直す。その間は画面につながらない。
  3. 数分待ってから、画面を開き直す。[登録管理] の「バックアップ / リストア」に結果が表示される。
  4. 失敗した時は「ログを表示」で原因を確認できる。

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 を置いたディレクトリにある。バックアップとは別に保管する。

次に読む