AWS RDS(PostgreSQL)のバックアップ自動化とリストアの手順

データベースバックアップは、システム運用において重要な業務の一つです。
特に、クラウド上のRDS(リレーショナルデータベースサービス)を利用している場合、定期的なバックアップを取得し、万が一のデータ損失に備えることが不可欠です。

本記事では、Windowsバッチを活用してRDS(ここではPostgreSQL)のバックアップを取得し、それをタスクスケジューラー自動化する方法を解説します。
また、バックアップデータのリストア手順についても詳しく説明します。

バックアップの実装方法

この記事では、pg_dumpコマンドを使用したバックアップを紹介しますので、前提として、以下のインストーラー(Windowsの場合は、Windows x86-64)をダウンロードし、クライアントだけでもインストールしてください。

バックアップ用バッチの作成

以下のバッチを使用して、RDSのバックアップを取得できます。
RDSの接続情報を外部の設定ファイル(CSV形式)に保存し、複数のデータベースを一括でバックアップする仕組みです。

設定ファイル(config.txt)

ホスト名,ポート,ユーザー名,パスワード,データベース名1 データベース名2
example-db.xxxx.rds.amazonaws.com,5432,admin,password123,db1 db2 db3

バッチスクリプト(backup_postgres.bat)

@echo off
setlocal enabledelayedexpansion

rem バックアップ設定
set BACKUP_DIR=D:\Backup\RDS
set CONFIG_FILE=D:\Backup\rds_config.txt
set RETENTION_DAYS=7

rem 日付フォーマット (YYYYMMDD)
for /f "tokens=2 delims==" %%I in ('"wmic os get localdatetime /value"') do set datetime=%%I
set DATESTR=%datetime:~0,8%

if not exist "%CONFIG_FILE%" (
    echo エラー: 設定ファイルが見つかりません - %CONFIG_FILE%
    exit /b 1
)

for /f "usebackq tokens=1,2,3,4,* delims=," %%A in ("%CONFIG_FILE%") do (
    set PGHOST=%%A
    set PGPORT=%%B
    set PGUSER=%%C
    set PGPASSWORD=%%D
    set DATABASES=%%E

    echo バックアップ開始: インスタンス !PGHOST!

    for %%D in (!DATABASES!) do (
        set DB_NAME=%%D
        set BACKUP_FILE=%BACKUP_DIR%\!DB_NAME!_%DATESTR%.dump
        
        set PGPASSWORD=!PGPASSWORD!
        echo バックアップ: !PGHOST! の !DB_NAME!
        pg_dump -h !PGHOST! -p !PGPORT! -U !PGUSER! -F c -b -v -f "!BACKUP_FILE!" !DB_NAME!
        echo バックアップ完了: !BACKUP_FILE!
    )
)

rem 古いバックアップ削除
forfiles /p "%BACKUP_DIR%" /s /m *.dump /d -%RETENTION_DAYS% /c "cmd /c del @path"
echo 古いバックアップ削除完了(%RETENTION_DAYS%日以上前のファイル)

endlocal

タスクスケジューラーによる自動化

タスクの作成

  1. [Windowsキー] + [R] を押して「taskschd.msc」と入力し、Enterを押す
  2. 「タスクスケジューラー」内で「基本タスクの作成」をクリック
  3. 名前: PostgreSQL Backup
  4. 「次へ」をクリック

トリガーの設定

  1. 「毎日」を選択し、「次へ」をクリック
  2. 実行時間を午前2:00(例)に設定し、「次へ」をクリック

操作の設定

  1. 「プログラムの開始」を選択し、「次へ」をクリック
  2. プログラム/スクリプト: D:\Backup\backup_postgres.bat
  3. 開始(オプション): D:\Backup\
  4. 「次へ」をクリックし、「完了」を押す

詳細設定

  1. 作成したタスクをダブルクリック
  2. 「全般」タブで「最上位の特権で実行」にチェック
  3. 「構成対象」→ 「Windows 10(例)」 に変更
  4. 「ユーザーがログオンしていなくても実行する」を選択し、管理者パスワードを入力

バックアップのリストア手順

バックアップからデータベースを復元するには、pg_restore コマンドを使用します。

リストアコマンド

pg_restore -h example-db.xxxx.rds.amazonaws.com -p 5432 -U admin -d db1 -v D:\Backup\RDS\db1_YYYYMMDD.dump

リストア手順

  1. コマンドプロンプトを管理者権限で開く
  2. PGPASSWORD を環境変数に設定 set PGPASSWORD=password123
  3. 上記の pg_restore コマンドを実行

まとめ

本記事では、バッチを用いたRDSバックアップ方法、タスクスケジューラーによる自動化、そしてリストア手順について解説しました。

定期的なバックアップを行い、データの保全性を確保することで、障害発生時の影響を最小限に抑えることができます。
運用効率を向上させるために、ぜひこの方法を活用してください。


Amazonベストセラー

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA