ユース・ケース5: 複数リージョン表のバックアップおよびリストア

組織は、3つのオンプレミスKVStoreをフランクフルト、ロンドンおよびダブリンにそれぞれ1つずつデプロイし、3つのすべてのリージョンにまたがるMR表を作成しました。複数リージョン表は、複数のリージョンにまたがり、常に同期される単一の表です。

ある日、アプリケーションのバグまたは違法な変更により、組織はあるリージョンのMR表で表レベルのデータ損失または破損を被ります。すべてのリージョンでMR表が同期されるため、破損またはデータ損失は他のリージョンにもレプリケートされます。そのため、組織は、データ安全ポリシーの一部として定期的に作成しているMR表バックアップから、すべてのリージョンのMR表をリストアする必要があります。

このトピックでは、MR表のバックアップとリストアの方法を学習します。

複数リージョン表のバックアップ

MR表のバックアップを作成すると、アプリケーションで誤ってデータが破損した場合に、後から表データをリストアするために役立ちます。

MR表のバックアップを作成するには:
  1. 複数リージョン表の統計を使用して、バックアップする表の最新のリージョンを検索します。管理コマンドライン・インタフェース(CLI)で次のコマンドを実行します。
    show mrtable-agent-statistics -agent 0 -json

    MR表の統計の詳細は、show mrtable-agent-statisticsを参照してください

  2. show mrtable-agent-statisticsコマンドによって返される統計で、"returnValue"[]."statistics"."regionStat"[]."laggingMs"."max"属性を見つけて、laggingMSフィールドのmax属性の最小値を持つリージョンを見つけます。そのリージョンには、MR表の最新データが含まれています。
    次の例では、フランクフルト・リージョンにlaggingMSフィールドのmax属性の最小値があるため、MR表の最新データがあります。
    kv-> show mrtable-agent-statistics -agent 0 -json
    {
      "operation": "show mrtable-agent-statistics",
      "returnCode": 5000,
      "description": "Operation ends successfully",
      "returnValue": {
        "XRegionService-1_0": {
          "timestamp": 1592901180001,
          "statistics": {
            "agentId": "XRegionService-1_0",
            "beginMs": 1592901120001,
            "dels": 1024,
            "endMs": 1592901180001,
            "incompatibleRows": 100,
            "intervalMs": 60000,
            "localRegion": "slc1",
            "persistStreamBytes": 524288,
            "puts": 2048,
            "regionStat": {
              "fra": {
                "completeWriteOps": 10,
                "laggingMs": {
                  "avg": 502,
                  "max": 885,
                  "min": 26
                },
                "lastMessageMs": 1591594977587,
                "lastModificationMs": 1591594941686,
                "latencyMs": {
                  "avg": 20,
                  "max": 40,
                  "min": 10
                }
              },           
              "lnd": {
                "completeWriteOps": 10,
                "laggingMs": {
                  "avg": 512,
                  "max": 998,
                  "min": 31
                },
                "lastMessageMs": 1591594977587,
                "lastModificationMs": 1591594941686,
                "latencyMs": {
                  "avg": 20,
                  "max": 40,
                  "min": 10
                }
              },
              "dub": {
                "completeWriteOps": 20,
                "laggingMs": {
                  "avg": 535,
                  "max": 1024,
                  "min": 45
                },
                "lastMessageMs": 1591594978254,
                "lastModificationMs": 1591594956786,
                "latencyMs": {
                  "avg": 30,
                  "max": 45,
                  "min": 15
                }
              }
            },
            "requests": 12,
            "responses": 12,
            "streamBytes": 1048576,
            "winDels": 1024,
            "winPuts": 2048
          }
        }
      }
    }
  3. Oracle NoSQL Database Migratorを使用して、ソース構成のStep#2で識別されるリージョンに接続してMR表をエクスポートします。また、要件に基づいて適切なシンク・タイプを使用してMR表をインポートします。ソースとシンクの詳細は、Oracle NoSQL Data Migratorの使用を参照してください。

    ノート:

    MR表のバックアップは、NoSQLトポロジのNoSQL Storage Nodeに対してローカルではないリモートのストレージに保存してください。

複数リージョン表のリストア

データ損失またはデータ破損が発生し、最新バージョンのMR表に戻す場合に、MR表のバックアップからMR表をリストアできます。

ヒント:

リストア中のMR表に対するすべての書込みアクティビティを停止することをお薦めします。
バックアップからMR表をリストアするには:
  1. kvプロンプトから次のコマンドを実行して、MR表に関連付けられたリージョンのリストを検索します。
    kv-> SHOW TABLE -NAME <table name>
    たとえば、次のようになります。
    kv-> SHOW TABLE -NAME users
    {
      "json_version": 1,
      "type": "table",
      "name": "users",
      "regions": {
        "1": "fra",
        "2": "lnd"
      },
     .....
     .....
    }
  2. DROP TABLE文を使用して、MR表が関連付けられている各リージョンのMR表を削除します。MR表を削除する方法の詳細は、表および索引の削除を参照してください。
  3. すべてのリージョンでMR表を再作成し、MR表に関連付けるリモート・リージョンを指定します。詳細は、複数リージョン表の作成を参照してください。
  4. Oracle NoSQL Database Migratorを使用して、シンク構成のStep#1で識別される任意の1つのリージョンに接続してMR表をリストアします。また、MR表バックアップが存在する場所に基づいて、適切なソース構成タイプを使用します。バックアップのロード中に、Oracle NoSQL Databaseは各リモート・リージョンの表を同期します。詳細は、Oracle NoSQL Data Migratorの使用を参照してください。