技術を知る:PostgreSQLのバックアップとリカバリー ~ 物理バックアップ ~
PostgreSQLインサイド

ここでは、PostgreSQLデータベースとFUJITSU Software Enterprise Postgres(以降、Enterprise Postgresと略します)の物理バックアップとリカバリーについて解説します。

1. 物理バックアップには何があるのか?

物理バックアップは、データベースを構成する全ファイルを丸ごとバックアップする方法です。物理バックアップには、バックアップ取得時におけるデータベースの状態により、オフラインバックアップとオンラインバックアップの2つがあります。

  • オフラインバックアップ

    PostgreSQLデータベースを停止した状態で、OS付属のコマンドなどを使ってデータベースのファイルをすべてコピーすることで、データベースクラスタ全体をバックアップします。取得したバックアップデータは、OS付属のコマンドを使って戻し、その後PostgreSQLデータベースを起動することで、バックアップを取得した時点へリカバリーできます。

  • オンラインバックアップ

    PostgreSQLデータベースを起動した状態でバックアップを取得します。まず、起点となるデータのベースバックアップを取得します。ベースバックアップの取得中もデータは更新されていきますので、更新処理はトランザクションログ(Write-Ahead Log(WAL)とも呼ばれます。以降、WALと略します。)として保存されます。WALは必要に応じてアーカイブされ、アーカイブログとして保存されます。データベース破壊など何らかのトラブルが発生した場合は、ベースバックアップ+アーカイブログ+WALを使ってリカバリーします。
    オンラインバックアップを実施する方法としてPostgreSQLが持つ機能に加え、当社のEnterprise Postgresでは、独自機能を加えた以下の3つがあります。

    • 継続的アーカイブによるオンラインバックアップ

      データベースをバックアップモードにしたあと、OSの機能などでファイルをコピーし、コピー完了後にバックアップモードを終了する方法です。取得したバックアップデータは、ポイントインタイムリカバリーを使ってリカバリーします。復旧時点(リストアポイント)にはバックアップ時点、任意の時刻または任意の地点などが設定できます。

    • WebAdmin【Enterprise Postgres 独自機能】

      Enterprise Postgresが提供するGUI(Graphical User Interface)です。継続的アーカイブによるオンラインバックアップをワンタッチで行うことができます。また、バックアップ実行後のWALを、データ格納先のディスクとバックアップデータ格納先のディスクに二重化して保持しています。バックアップ取得時点と最新時点へリカバリーできます。

    • pgx_dmpallコマンド【Enterprise Postgres 独自機能】

      Enterprise Postgresが提供するコマンドです。継続的アーカイブによるオンラインバックアップをワンタッチで行うことができます。また、バックアップ実行後のWALを、データ格納先のディスクとバックアップデータ格納先のディスクに二重化して保持しています。取得したバックアップデータは、pgx_rcvallコマンドまたはWebAdminでリカバリーします。復旧時点(リストアポイント)にはバックアップ時点、任意の時刻または任意の地点などが設定できます。

物理バックアップの種類について、以下の表にまとめます。なお、表中記号の意味は以下のとおりです。
○:機能有り、-:機能無し、赤塗りのセル:Enterprise Postgresの機能

分類 概要 バックアップ方法 バックアップ対象 リカバリー方法 リカバリーの復旧時点(リストアポイント)
バックアップ 最新 任意
オフラインバックアップ データベース停止状態で、データベースのファイルを物理的にコピー OS付属コマンド ・データベースクラスタ
・テーブル空間
・WAL
OS付属コマンド
オンラインバックアップ データベース起動状態で、データベースのファイルを物理的にコピーしてWALも使用 継続的アーカイブによるオンラインバックアップ ・データベースクラスタ
・テーブル空間
ポイントインタイムリカバリー(PITR)
WebAdmin ・データベースクラスタ
・テーブル空間
WebAdmin
注1
pgx_dmpallコマンド ・データベースクラスタ
・テーブル空間
WebAdmin
注1
pgx_rcvallコマンド
注1
  • 注1
    データだけではなく、WALに障害が発生した場合でも最新に復旧できます。

2. 物理バックアップを使ってみる

PostgreSQLデータベースで構築した人事情報システムを想定しました。

動作OS Red Hat® Enterprise Linux® 7(for Intel64)
データベース FUJITSU Software Enterprise Postgres Advanced Edition 10
PostgreSQLバージョンレベル PostgreSQL 10.3
インスタンス名 inst1
データベース名 fepdb
テーブル名 人事テーブル1(jtbl1)

この条件に基づいて、3つのオンラインバックアップ・リカバリーにおける操作例を実機を用いた動画で説明します。

想定する業務要件

以下の手順で作業を進めます。

  1. オンラインバックアップ運用の準備を行ってオンラインバックアップを実行
  2. 組織変更に伴って人事テーブル1(jtbl1)における部署コード(code)の値を変更
  3. データ格納先のディスクでハードウェア障害が発生!人事情報システムのインスタンス(inst1)を緊急停止して、ディスクを交換
  4. 人事情報システムのインスタンス(inst1)を再起動して最新状態にリカバリー

図1:オンラインバックアップ・リカバリーの業務要件

2.1 継続的アーカイブによるオンラインバックアップ・ポイントインタイムリカバリーをする

継続的アーカイブによるオンラインバックアップとポイントインタイムリカバリーの例を説明します。

1)継続的アーカイブによるオンラインバックアップを実施する

継続的アーカイブによるオンラインバックアップを使ってインスタンス(inst1)をバックアップします。

事前準備

  1. ベースバックアップ用のデータ格納先のディレクトリを作成します。
  2. アーカイブログ格納先のディレクトリを作成します。
  3. WALアーカイブの設定のため、postgresql.confの以下パラメーターを編集します。
archive_mode ON
archive_command 'test ! -f アーカイブログ格納先のディレクトリ/%f && cp %p アーカイブログ格納先のディレクトリ/%f'
wal_level replica
max_wal_senders 2

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. インスタンス(inst1)を起動します。
  2. 人事テーブル1(jtbl1)の内容を確認します。
  3. pg_basebackupコマンドでベースバックアップを実行します。
  4. ベースバックアップデータが生成されたかを確認します。
  5. WALが生成されているかを確認します。
  6. バックアップ後に人事テーブル1(jtbl1)の内容を更新します。

2)ハードウェア障害が発生!

データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。

3)ポイントインタイムリカバリーによるリカバリーを実施する

ポイントインタイムリカバリーを使って、障害が発生する直前の状態にリカバリーします。

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. ベースバックアップデータをリストアします。
  2. リストアした古いWALの中身を削除します。
  3. 未アーカイブのWALをpg_walにコピーすることで、inst1に組み込みます。
  4. 復旧コマンドファイル(recovery.conf)を作成します。
  5. インスタンス(inst1)を起動すると、リカバリーが実施されます。
  6. 人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。

ここからはEnterprise Postgresが提供する独自機能である「WebAdmin」および「pgx_dmpallコマンド」を使ったバックアップ・リカバリーを説明します。PostgreSQLが提供している機能に比べて簡単に作業できる様子をご覧ください。

2.2 WebAdminを使用したバックアップ・リカバリーをする

Enterprise Postgresの独自機能であるWebAdminを使ってデータベースクラスタ全体をバックアップ・リカバリーする例を説明します。

1)WebAdminによるバックアップを実施する

GUIツールのWebAdminを使ってインスタンス(inst1)をバックアップします。WebAdminでは、バックアップに必要なpostgresql.confのパラメーターがあらかじめ設定されています。利用者はWebAdminでバックアップ対象のデータベースを選択するだけなので、非常に簡単に処理ができます。

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. 人事テーブル1(jtbl1)の内容を確認します。
  2. WebAdminにログインしてインスタンス(inst1)を選択します。
  3. WebAdminでバックアップを実行します。
  4. バックアップ後に人事テーブル1(jtbl1)の内容を更新します。

2)ハードウェア障害が発生!

データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。

3)WebAdminによるリカバリーを実施する

WebAdminを使って、障害が発生する直前の状態にリカバリーします。

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. WebAdminでインスタンス(inst1)を選択してエラーメッセージを確認します。
  2. WebAdminでリカバリーを実行します。
  3. 人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。

2.3 pgx_dmpallコマンドを使用したバックアップ・リカバリーをする

Enterprise Postgresの独自機能であるpgx_dmpallコマンドを使ってデータベースクラスタ全体をバックアップし、同じく独自機能であるpgx_rcvallコマンドを使ってリカバリーする例を説明します。

1)pgx_dmpallコマンドによるバックアップを実施する

pgx_dmpallコマンドを使ってインスタンス(inst1)をバックアップします。

事前準備

  1. バックアップデータ格納先のディレクトリを作成します。
  2. postgresql.confの以下パラメーターを編集してバックアップに必要な設定を行います。
backup_destination 'バックアップデータ格納先のディレクトリ名'
archive_mode on
archive_command 'インストールディレクトリ/bin/pgx_walcopy.cmd "%p" "バックアップデータ格納先のディレクトリ/archived_wal/%f"'

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. インスタンス(inst1)を起動します。
  2. 人事テーブル1(jtbl1)の内容を確認します。
  3. pgx_dmpallコマンドでデータベースクラスタ(inst1)をバックアップします。
  4. pgx_rcvallコマンドでバックアップ状態を確認します。
  5. バックアップ後に人事テーブル1(jtbl1)を更新します。

2)ハードウェア障害が発生!

データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。

3)pgx_rcvallコマンドによるリカバリーを実施する

pgx_rcvallコマンドを使って、障害が発生する直前の状態にリカバリーします。

動画による操作解説

「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバからの応答メッセージなど、黄色文字は解説です。

  1. データ格納ディスクを交換したので、新しいディスクにデータ格納先のディレクトリを作成します。
  2. pgx_rcvallコマンドでデータベースクラスタ(inst1)をリカバリーします。
  3. インスタンス(inst1)を起動します。
  4. 人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。

このようにEnterprise Postgresの独自機能によるバックアップ・リカバリーを利用することで、快適な業務データの保守運用が実現できます。

本コンテンツに関するお問い合わせ

お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。

ページの先頭へ