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

ここでは、PostgreSQLデータベースとFujitsu Enterprise Postgres(以降、Enterprise Postgresと略します)の物理バックアップとリカバリーについて解説します。
1. 物理バックアップには何があるのか?
物理バックアップは、データベースを構成する全ファイルを丸ごとバックアップする方法です。物理バックアップには、バックアップ取得時におけるデータベースの状態により、オフラインバックアップとオンラインバックアップの2つがあります。
-
オフラインバックアップ
PostgreSQLデータベースを停止した状態で、OS付属のコマンドなどを使ってデータベースのファイルをすべてコピーすることで、データベースクラスタ全体をバックアップします。取得したバックアップデータは、OS付属のコマンドを使って戻し、その後PostgreSQLデータベースを起動することで、バックアップを取得した時点へリカバリーできます。
-
オンラインバックアップ
PostgreSQLデータベースを起動した状態でバックアップを取得します。まず、起点となるデータのベースバックアップを取得します。ベースバックアップの取得中もデータは更新されていきますので、更新処理はトランザクションログ(WAL:Write-Ahead Logとも呼ばれます。以降、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でリカバリーします。復旧時点(リストアポイント)にはバックアップ時点、任意の時刻または任意の地点などが設定できます。
データ量が多くバックアップに時間がかかる場合には、FUJITSU Storage ETERNUSなどのストレージ製品にある高速コピー機能を活用すると、大量データを高速にバックアップすることができます。詳細については、「PostgreSQLのバックアップとリカバリー ~ 大量データの高速バックアップ ~」の記事や製品に添付されているマニュアル"Fujitsu Enterprise Postgres運用ガイド"をご覧ください。
-
継続的アーカイブによるオンラインバックアップ
物理バックアップの種類について、以下の表にまとめます。なお、表中記号の意味は以下のとおりです。
レ:機能有り、N/A:機能無し、赤塗りのセル:Enterprise Postgresの機能
分類 | 概要 | バックアップ方法 | バックアップ対象 | リカバリー方法 | リカバリーの復旧時点(リストアポイント) | ||
---|---|---|---|---|---|---|---|
バックアップ | 最新 | 任意 | |||||
オフラインバックアップ | データベース停止状態で、データベースのファイルを物理的にコピー | OS付属コマンド | ・データベースクラスタ ・テーブル空間 ・WAL |
OS付属コマンド | レ | N/A | N/A |
オンラインバックアップ | データベース起動状態で、データベースのファイルを物理的にコピーしてWALも使用 | 継続的アーカイブによるオンラインバックアップ | ・データベースクラスタ ・テーブル空間 |
ポイントインタイムリカバリー(PITR) | レ | レ | レ |
WebAdmin | ・データベースクラスタ ・テーブル空間 |
WebAdmin | レ |
レ (注1) |
N/A | ||
pgx_dmpallコマンド | ・データベースクラスタ ・テーブル空間 |
WebAdmin | レ |
レ (注1) |
N/A | ||
pgx_rcvallコマンド | レ |
レ (注1) |
レ |
-
注1データだけではなく、WALに障害が発生した場合でも最新に復旧できます。
2. 物理バックアップを使ってみる
PostgreSQLデータベースで構築した人事情報システムを想定しました。
動作OS | Red Hat® Enterprise Linux® 7(for Intel64) |
---|---|
データベース | Fujitsu Enterprise Postgres Advanced Edition 10 |
PostgreSQLバージョンレベル | PostgreSQL 10.3 |
インスタンス名 | inst1 |
データベース名 | fepdb |
テーブル名 | 人事テーブル1(jtbl1) |
この条件に基づいて、3つのオンラインバックアップ・リカバリーにおける操作例を実機を用いた動画で説明します。
想定する業務要件
以下の手順で作業を進めます。
-
オンラインバックアップ運用の準備を行ってオンラインバックアップを実行
-
組織変更に伴って人事テーブル1(jtbl1)における部署コード(code)の値を変更
-
データ格納先のディスクでハードウェア障害が発生!人事情報システムのインスタンス(inst1)を緊急停止して、ディスクを交換
-
人事情報システムのインスタンス(inst1)を再起動して最新状態にリカバリー
図1:オンラインバックアップ・リカバリーの業務要件
2.1 継続的アーカイブによるオンラインバックアップ・ポイントインタイムリカバリーをする
継続的アーカイブによるオンラインバックアップとポイントインタイムリカバリーの例を説明します。
1)継続的アーカイブによるオンラインバックアップを実施する
継続的アーカイブによるオンラインバックアップを使ってインスタンス(inst1)をバックアップします。
事前準備
-
ベースバックアップ用のデータ格納先のディレクトリーを作成します。
-
アーカイブログ格納先のディレクトリーを作成します。
-
WALアーカイブの設定のため、postgresql.confの以下パラメーターを編集します。
archive_mode | ON |
---|---|
archive_command | 'test ! -f アーカイブログ格納先のディレクトリー/%f && cp %p アーカイブログ格納先のディレクトリー/%f' |
wal_level | replica |
max_wal_senders | 2 |
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
インスタンス(inst1)を起動します。
-
人事テーブル1(jtbl1)の内容を確認します。
-
pg_basebackupコマンドでベースバックアップを実行します。
-
ベースバックアップデータが生成されたかを確認します。
-
WALが生成されているかを確認します。
-
バックアップ後に人事テーブル1(jtbl1)の内容を更新します。
2)ハードウェア障害が発生!
データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。
3)ポイントインタイムリカバリーによるリカバリーを実施する
ポイントインタイムリカバリーを使って、障害が発生する直前の状態にリカバリーします。
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
ベースバックアップデータをリストアします。
-
リストアした古いWALの中身を削除します。
-
未アーカイブのWALをpg_walにコピーすることで、inst1に組み込みます。
-
復旧コマンドファイル(recovery.conf)を作成します。
-
インスタンス(inst1)を起動すると、リカバリーが実施されます。
-
人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。
ここからはEnterprise Postgresが提供する独自機能である「WebAdmin」および「pgx_dmpallコマンド」を使ったバックアップ・リカバリーを説明します。PostgreSQLが提供している機能に比べて簡単に作業できる様子をご覧ください。
2.2 WebAdminを使用したバックアップ・リカバリーをする
Enterprise Postgresの独自機能であるWebAdminを使ってデータベースクラスタ全体をバックアップ・リカバリーする例を説明します。
1)WebAdminによるバックアップを実施する
GUIツールのWebAdminを使ってインスタンス(inst1)をバックアップします。WebAdminでは、バックアップに必要なpostgresql.confのパラメーターがあらかじめ設定されています。利用者はWebAdminでバックアップ対象のデータベースを選択するだけなので、非常に簡単に処理ができます。
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
人事テーブル1(jtbl1)の内容を確認します。
-
WebAdminにログインしてインスタンス(inst1)を選択します。
-
WebAdminでバックアップを実行します。
-
バックアップ後に人事テーブル1(jtbl1)の内容を更新します。
2)ハードウェア障害が発生!
データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。
3)WebAdminによるリカバリーを実施する
WebAdminを使って、障害が発生する直前の状態にリカバリーします。
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
WebAdminでインスタンス(inst1)を選択してエラーメッセージを確認します。
-
WebAdminでリカバリーを実行します。
-
人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。
2.3 pgx_dmpallコマンドを使用したバックアップ・リカバリーをする
Enterprise Postgresの独自機能であるpgx_dmpallコマンドを使ってデータベースクラスタ全体をバックアップし、同じく独自機能であるpgx_rcvallコマンドを使ってリカバリーする例を説明します。
1)pgx_dmpallコマンドによるバックアップを実施する
pgx_dmpallコマンドを使ってインスタンス(inst1)をバックアップします。
事前準備
-
バックアップデータ格納先のディレクトリーを作成します。
-
postgresql.confの以下パラメーターを編集してバックアップに必要な設定を行います。
backup_destination | 'バックアップデータ格納先のディレクトリー名' |
---|---|
archive_mode | on |
archive_command | 'インストールディレクトリー/bin/pgx_walcopy.cmd "%p" "バックアップデータ格納先のディレクトリー/archived_wal/%f"' |
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
インスタンス(inst1)を起動します。
-
人事テーブル1(jtbl1)の内容を確認します。
-
pgx_dmpallコマンドでデータベースクラスタ(inst1)をバックアップします。
-
pgx_rcvallコマンドでバックアップ状態を確認します。
-
バックアップ後に人事テーブル1(jtbl1)を更新します。
2)ハードウェア障害が発生!
データ格納先のディスクでハードウェア障害が発生しました。人事情報システム(inst1)を緊急停止して、ディスクを交換します。
3)pgx_rcvallコマンドによるリカバリーを実施する
pgx_rcvallコマンドを使って、障害が発生する直前の状態にリカバリーします。
動画による操作解説
「想定する業務要件」を以下の手順で実行する様子を動画にて解説します。また、動画中の白文字はコマンドなどの実行操作およびそれに対するサーバーからの応答メッセージなど、黄色文字は解説です。
-
データ格納ディスクを交換したので、新しいディスクにデータ格納先のディレクトリーを作成します。
-
pgx_rcvallコマンドでデータベースクラスタ(inst1)をリカバリーします。
-
インスタンス(inst1)を起動します。
-
人事テーブル1(jtbl1)が最新状態に戻ったかを確認します。
このようにEnterprise Postgresの独自機能によるバックアップ・リカバリーを利用することで、快適な業務データの保守運用が実現できます。
2025年1月27日更新
富士通のソフトウェア公式チャンネル(YouTube)
-
- 富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。
- 富士通のミドルウェア製品のご紹介や各種イベント・セミナーの講演内容、デモンストレーションなどの動画をご覧いただけます。
PostgreSQLについてより深く知る
PostgreSQLに興味をお持ちのお客様はこちらのコンテンツもお勧めです。ぜひご覧ください。
本コンテンツに関するお問い合わせ
お電話でのお問い合わせ
-
富士通コンタクトライン(総合窓口)
0120-933-200受付時間:9時~12時および13時~17時30分(土曜日・日曜日・祝日・当社指定の休業日を除く)