0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

本番DBをMacにバックアップする手順

0
Posted at

今回は、本番PostgreSQLデータベースを pg_dump でバックアップし、Next.jsプロジェクト内の backups/ に保存する方法でまとめます。

セキュリティについては、.gitignore を使って、GitHubへの誤コミットを防ぐ運用にします。

1. PostgreSQLのツールをインストールする

Macのターミナルで実行。

brew install libpq

インストール後、pg_dump を使えるようにする。

brew link --force libpq

確認:

pg_dump --version

バージョンが表示されればOK。

※ pg_dump はNeon側のPostgreSQLと同じか新しいメジャーバージョンを使用する。

2. プロジェクトのフォルダに移動する

ターミナルでNext.jsプロジェクトに移動。

cd ~/develop/app/find-good-pnpm

現在のフォルダを確認。

pwd

3. .gitignore にバックアップフォルダを追加する

プロジェクト直下の .gitignore に以下を追加。

# Database backups
/backups/

これで backups/ 内のファイルは、新しくGitに追加されなくなる。

  1. バックアップフォルダを作成する
mkdir -p backups
chmod 700 backups

chmod 700 は、フォルダへのアクセスを原則として自分のユーザーだけに制限する設定。

5. Neonから本番DBの接続URLを取得する

  1. Neon Console にログイン
  2. 対象のプロジェクトを選択
  3. 本番ブランチと対象データベースを選択
  4. 「Connect」から接続文字列を取得
  5. Connection poolingをOFF にして直接接続URLをコピー
    接続URLは次のような形式。
postgresql://USER:PASSWORD@HOST/DBNAME?sslmode=require

6. 接続URLをターミナルに設定する

接続URLをコマンド履歴に残しにくくするため、次のコマンドを使う。

read -s "DATABASE_URL?Neonの直接接続URL: "
export DATABASE_URL
echo

表示された入力待ちの状態で、Neonの接続URLを貼り付けてEnter。

入力したURLは画面に表示されない。

※ この環境変数は、基本的に現在のターミナルセッションだけで使います。

7. 本番DBのバックアップを取得する

以下を実行。

pg_dump -Fc -v \
  -d "$DATABASE_URL" \
  -f "backups/find-good-$(date +%Y%m%d-%H%M%S).dump"

各オプションの意味:
オプション 意味
-Fc 復元しやすいカスタム形式
-v 実行状況を表示
-d 接続先のDB
-f バックアップの保存先

成功すると、例えば次のようなファイルが作成される。

find-good-pnpm/
└── backups/
    └── find-good-20261101-130000.dump

8. バックアップを確認する

ファイルが作成されたか確認。

ls -lh backups/

ファイルの権限を自分だけに制限する。

chmod 600 backups/*.dump

バックアップの内容が読み取れるか確認。

pg_restore -l backups/find-good-20261101-130000.dump

※ ファイル名は実際に作成されたものに変更して下さい。

pg_restore -l は内容一覧の確認であり、復元成功の保証ではない。重要なDBなので、別のテスト用DBへの復元確認も推奨。

9. GitHubにアップロードされないことを確認する

git check-ignore -v backups/*.dump

例えば次のように表示されればOK。

.gitignore:...:/backups/ backups/find-good-20261101-130000.dump

さらに確認するなら:

git status --short

backups/ が新規ファイルとして表示されなければ、通常の git add . では追加されない。

10. 接続情報を削除する

バックアップ取得後、ターミナルの環境変数から接続URLを削除する。

unset DATABASE_URL

注意点

  • .gitignore は誤コミット防止であり、暗号化ではない。
  • バックアップにはユーザー情報や認証関連データが含まれる可能性がある。
  • Macの紛失対策としてFileVaultを有効にしておく。
  • バックアップをMac内だけに保存すると、故障時に失われるため、将来的には暗号化したコピーを別の場所にも保存する。
  • 本番DBへの接続には、必ず正しい本番ブランチとデータベースを指定する。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?