バックアップは、すべてのディザスタリカバリプランで必須です。許容可能な目標復旧時点を保証するのに必ずしも十分ではないかもしれませんが、最初のアプローチとしては適切です。問題は、障害が発生した場合にこのバックアップを使用する必要があり、何らかの理由で使用できない場合にどうなるかということです。おそらくそのような状況になりたくないので、このブログでは、バックアップが適切に使用できるかどうかを確認する方法を説明します。
PostgreSQLバックアップの種類
- 論理的 :バックアップは、SQLなどの人間が読める形式で保存されます。
- 物理的 :バックアップにはバイナリデータが含まれています。
なぜこれに言及するのですか?あるタイプに対して実行できるチェックがいくつかあり、他のタイプに対しては実行できないことがわかるためです。
すべてが正常に機能するかどうかを確認する最初の方法は、バックアップログを確認することです。
PostgreSQLバックアップを実行するための最も簡単なコマンドは次のようになります。
$ pg_dumpall > /path/to/dump.sql
しかし、コマンドの実行中にエラーが発生したかどうかを確認するにはどうすればよいですか?追加するだけで、出力を特定のログファイルに送信できます:
$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
したがって、サーバーcronにこの行を追加して、毎日実行することができます。
30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log
そして、ログファイルを監視してエラーを探す必要があります。たとえば、Nagiosなどの監視ツールに追加します。
ログを確認するだけでは、バックアップが機能することを確認できません。たとえば、何らかの理由でバックアップファイルが破損している場合、ログファイルにそのファイルが表示されない可能性があります。
>論理バックアップを使用している場合は、バックアップファイルの内容を確認して、すべてのデータベースがそこにあることを確認できます。
たとえば、次のコマンドを使用して、現在のPostgreSQLデータベースを一覧表示できます。
$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'
postgres
template1
world
バックアップファイルにあるデータベースを確認します:
$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'
template1
postgres
world
このチェックの問題は、サイズやデータをチェックしないことです。そのため、バックアップの実行時にエラーが発生した場合、データが失われる可能性があります。
バックアップが機能しているかどうかを確認する最も安全な方法は、バックアップを復元してデータベースにアクセスすることです。
バックアップが完了したら、ダンプファイルをコピーして実行することにより、別のホストに手動で復元できます。例:
$ psql -f /path/to/dump.sql postgres
次に、それにアクセスしてデータベースを確認できます:
$ psql
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
template0 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 | =c/postgres +
| | | | | postgres=CTc/postgres
world | postgres | UTF8 | en_US.utf-8 | en_US.utf-8 |
(4 rows)
このメソッドの問題は、もちろん、手動で実行するか、これを自動化する方法を見つける必要があることです。これは、時間のかかる作業になる可能性があります。
ここで、ClusterControlがPostgreSQLバックアップの検証を自動化し、予期しない作業や手動タスクを回避する方法を見てみましょう。
ClusterControlで、クラスターを選択し、[バックアップ]セクションに移動してから、[バックアップの作成]を選択します。
自動検証バックアップ機能は、スケジュールされたバックアップで使用できます。それでは、「バックアップのスケジュール」オプションを選択しましょう。
バックアップをスケジュールするときは、方法やストレージなどの一般的なオプションを選択するだけでなく、スケジュール/頻度も指定する必要があります。
次のステップでは、バックアップを圧縮および暗号化して、保存期間。ここには、「バックアップの確認」機能もあります。
この機能を使用するには、専用のホスト(またはVM)が必要です。クラスターの一部ではありません。
ClusterControlはソフトウェアをインストールし、このホストのバックアップを復元します。復元後、ClusterControlバックアップセクションに確認アイコンが表示されます。
前述のように、どの環境でもバックアップは必須ですが、バックアップを使用できない場合、バックアップはバックアップではありません。したがって、いつか必要になった場合に備えて、バックアップが役立つことを確認する必要があります。このブログでは、バックアップを復元するときに問題が発生しないように、バックアップを確認するさまざまな方法を紹介しました。