3.7. 物理コピーを使用した PostgreSQL データのバックアップと復元
PostgreSQL データの物理バックアップには、コンテンツを格納しているファイルとディレクトリーが含まれます。通常、この方法はより高速で、サイズが小さくなります。
3.7.1. PostgreSQL サーバーでのファイルシステムバックアップの実行 リンクのコピーリンクがクリップボードにコピーされました!
ファイルシステムレベルのバックアップは、PostgreSQL インスタンス全体をバックアップする高速な方法です。この方法では、データの整合性を保つために postgresql サービスをシャットダウンする必要があります。
PostgreSQL のファイルシステムレベルのバックアップは、アーキテクチャーと RHEL メジャーバージョンに固有のものです。この方法でバックアップしたデータは、異なるアーキテクチャーまたは RHEL メジャーバージョンで復元することはできません。
手順
postgresqlサービスを停止します。# systemctl stop postgresql.serviceバックアップディレクトリーを作成します。次に例を示します。
# mkdir -p /root/postgresql-backup//var/lib/pgsql/ディレクトリーをバックアップします。# cp -rp /var/lib/pgsql/ /root/postgresql-backup//var/lib/pgsql/には、設定ファイル、データファイル、ログなど、PostgreSQL データベースサーバーの重要なファイルがすべて含まれています。postgresqlサービスを開始します。# systemctl start postgresql.service
3.7.2. PostgreSQL サーバーでのファイルシステムバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL インスタンスが破損した場合は、以前にデータディレクトリーを含むファイルシステムバックアップを実行済みであれば、このバックアップからインスタンスを復元できます。
前提条件
- PostgreSQL サーバーでファイルシステムバックアップを実行した。
ターゲットサーバーが、以下に示すバックアップソースの条件を満たしている必要があります。
- PostgreSQL のバージョンが同じである必要があります。
- システムアーキテクチャーが同じである必要があります。
手順
postgresqlサービスを停止します。# systemctl stop postgresql.service現在の
/var/lib/pgsql/ディレクトリーを削除します。# rm -rf /var/lib/pgsql/バックアップからデータディレクトリーを復元します。
# cp -rp /root/postgresql-backup/pgsql/ /var/lib//var/lib/pgsql/ディレクトリーの所有権を正しく設定します。# chown -R postgres:postgres /var/lib/pgsql//var/lib/pgsql/ディレクトリーの SELinux コンテキストを復元します。# restorecon -Rv /var/lib/pgsql/postgresqlサービスを開始します。# systemctl start postgresql.service
検証
-
postgresユーザーとしてログインします。 データベースに接続します。
$ psql <database>データベース内のデータにアクセスします。
<database>=# SELECT * FROM <table>;PostgreSQL サービスから切断します。
<database>=# \q