ページの先頭行へ戻る
Enterprise Postgres 16 SP1 オペレーターユーザーズガイド

5.11.3 Veleroを利用したディザスタリカバリ

Veleroを利用したディザスタリカバリについて説明します。

5.11.3.1 ディザスタリカバリの前提条件

本番環境と災害対策環境で以下を準備してください。本番環境においては本機能を有効化する前までに、また災害対策環境においては本機能を利用してリストアする前までに以下を準備する必要があります。

FEPClusterで静的なPVを利用する場合は、災害対策環境へリストアする前にPVを用意してください。本番環境と異なるストレージクラスや証明書などを使用する場合は、本番環境と同名のストレージクラスや証明書を災害対策環境に用意してください。ただし、データベースのバックアップデータの格納先であるオブジェクトストレージの証明書やシークレットが本番環境と災害対策環境で異なる場合は、異なる名前を設定してください。詳細は、“オペレーターリファレンス”の“FEPClusterパラメータ”を参照してください。

本機能は、x86のみに対応しています。

5.11.3.2 ディザスタリカバリの実施

本機能を有効化して、本番環境から災害対策環境へディザスタリカバリを実行する手順を説明します。また、災害対策環境から本番環境へ再びディザスタリカバリを実行する手順を説明します。

FEPClusterとFEPPool2のLOGボリュームは、復元できません。本機能を使用する前に、必ず本番環境と災害対策環境の両方で事前にテストおよび検証を実施してください。

5.11.3.2.1 FEPClusterカスタムリソースの設定

本機能を使用するためには、本番環境のFEPClusterカスタムリソースの通常の設定に加え、以下を設定してKubernetes上に配備してください。詳細は、“オペレーターリファレンス”の“FEPClusterパラメータ”を参照してください。

例)FEPClusterカスタムリソースの定義例

spec:
  fep:
    velero:
      enable: true
      labels: 
        backup-dev: my-backup1
        backup-dep: my-backup2
      backup:
        pgbackrestParams: |
          [global]
           repo1-retention-full=5
           repo1-retention-full-type=count
           repo2-retention-full=5
           repo2-retention-full-type=count
           log-path=/database/log/backup
           log-level-file=debug
           repo2-path=/ velero-backup/ velero-backup-for-dr2
           repo2-s3-bucket=my-s3-backet
           repo2-s3-endpoint=s3.ap-northeast-1.amazonaws.com
           repo2-s3-region=ap-northeast-1
           repo2-type=s3
         pgbackrestKeyParams: |
           repo2-s3-key=XXXXXXXXXX
           repo2-s3-key-secret=YYYYYYYYYY
         caName: DR-objectstorage-cert
         repoKeySecretName: XXX

resotre:
         image:
           image: “XXX-amd64”
           pullPolicy: IfNotPresent
         mcSpec:
           limit:
             cpu: 200m
             memory: 300Mi
           request:
             cpu: 100m
             memory: 200Mi
         restoreTargetRepo: 2
  fepChildCrVal:
      backup:
        pgbackrestParams: |
        [global]
         repo1-retention-full=5
         repo1-retention-full-type=count
         repo2-retention-full=5
         repo2-retention-full-type=count
         log-path=/database/log/backup
         log-level-file=debug
         repo2-path=/ velero-backup/ velero-backup-for-dr1
         repo2-s3-bucket=my-s3-backet
         repo2-s3-endpoint=s3.ap-northeast-1.amazonaws.com
         repo2-s3-region=ap-northeast-1
         repo2-type=s3
       pgbackrestKeyParams: |
         repo2-s3-key=XXXXXXXXXX
         repo2-s3-key-secret=YYYYYYYYYY 
       caName: objectstorage-cert
       repoKeySecretName: ZZZ

       schedule:
         num: 1
         schedule1:
           schedule: "0-59/3 * * * *" #schedule1.schedule
         type: "full" #schedule1.type
         repo: 2
5.11.3.2.2 Veleroでのバックアップ

本環境でFEPClusterを構築後、またはFEPClusterカスタムリソースを修正した後、以下のコマンドでFEPClusterカスタムリソースを含めたkubernetes上のリソースをオブジェクトストレージにバックアップします。

例)

velero backup create <バックアップの名前> --selector <バックアップ対象label>

本機能では、FEPClusterカスタムリソースのfep.velero.labelsで記述したラベルを指定し、ラベルが付与されているリソースのみをバックアップする、Veleroのバックアップコマンドのみサポートしています。それ以外のコマンドを実行すると、不要なリソースがバックアップ/リストアされ、構築やデータ復旧が失敗する可能性があります。ラベル指定時は、既存のラベルと混同しないように、以下のkeyは指定しないでください。

本機能により、ラベルが付与されるのは以下のリソースです。

以下のリソースをVeleroを用いてバックアップする場合、各種カスタムリソースやカスタムリソースに指定したConfigMapやSecretにspec.fep.velero.labelsで指定したラベル(spec.fep.velero.labelsが省略されている場合はデフォルトのbackup-group: fep-backup)を付与してください。

また、手動で作成したリソース(アプリケーションシステム、ConfigMap、Secretなど)は、spec.fep.velero.labelsで指定したラベル(spec.fep.velero.labelsが省略されている場合はデフォルトのbackup-group: fep-backu)を付与し、Veleroバックアップの対象にすることでバックアップできます。

Veleroコマンドの使用方法についての詳細は、公式ドキュメントを参照してください。

注意

FEPClusterなどのカスタムリソースを変更した場合、その都度、Veleroバックアップが必要です。データベースはオブジェクトストレージによりデータが最新の状態に復元されます。カスタムリソースが変更前の状態の場合、データベースと不整合が生じ、データの損失や性能の低下、セキュリティなどの問題を引き起こす可能性があります。

5.11.3.2.3 データベースのバックアップ

データベースのバックアップを定期的に実行してください。

5.11.3.2.4 Veleroでのリストア

災害発生などにより、本番環境で業務続行が不可能な場合、以下のコマンドでオブジェクトストレージに格納したFEPClueter カスタムリソースを含めたkubernetes上のリソースをリストアします。データベースのデータは、オブジェクトストレージに格納されたアーカイブWALの最新状態まで復元されます。

例)

velero restore create <リストアの名前> --from-backup <バックアップの名前>

Veleroコマンドの使用方法についての詳細は、公式ドキュメントを参照してください。

5.11.3.2.5 災害対策環境から本番環境への復元

災害対策環境から本番環境へ再度、Veleroを用いて復元する場合、災害対策環境に配備されているFEPClusterカスタムリソースに修正が必要です。ディザスタリカバリ後のFEPClsuter カスタムリソースのfep.velero.backup, fep.velero.restore には、ディザスタリカバリ前の情報が定義されています。本番環境で使用するオブジェクトストレージの情報へ最新化してください。その後、災害対策環境でVeleroを用いたバックアップ、本番環境でVeleroを用いたリストアを実施してください。