バックアップストレージ

TiDB は、Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage、NFS へのバックアップ データの保存をサポートしています。具体的には、 brコマンドの--storageまたは-sパラメータでバックアップstorageの URI を指定できます。このドキュメントでは、さまざまな外部storageサービスのURI 形式認証 、およびサーバー側暗号化紹介します。

TiKVに資格情報を送信する

CLIパラメータ説明デフォルト値
--send-credentials-to-tikvBRによって取得された資格情報を TiKV に送信するかどうかを制御します。true

デフォルトでは、storageシステムとして Amazon S3、GCS、または Azure Blob Storage を使用する場合、 BR は各 TiKV ノードに認証情報を送信します。この動作により構成が簡素化され、パラメータ--send-credentials-to-tikv (または短縮して-c ) によって制御されます。

この操作はIAM環境には適用できないことに注意してください。IAM ロール認証を使用する場合、各ノードには独自のロールと権限があります。この場合、認証情報の送信を無効にするには、 --send-credentials-to-tikv=false (または-c=0 ) を設定する必要があります。

./br backup full -c=0 -u pd-service:2379 --storage 's3://bucket-name/prefix'

BACKUPおよびRESTOREステートメントを使用してデータをバックアップまたは復元する場合は、 SEND_CREDENTIALS_TO_TIKV = FALSEオプションを追加できます。

BACKUP DATABASE * TO 's3://bucket-name/prefix' SEND_CREDENTIALS_TO_TIKV = FALSE;

URI 形式

URI 形式の説明

外部storageサービスの URI 形式は次のとおりです。

[scheme]://[host]/[path]?[parameters]

URI 形式の詳細については、 外部ストレージサービスの URI 形式参照してください。

URIの例

このセクションでは、 hostパラメータとしてexternal (前のセクションではbucket nameまたはcontainer name ) を使用した URI の例をいくつか示します。

  • Amazon S3
  • GCS
  • Azure Blob Storage

スナップショットデータをAmazon S3にバックアップする

./br backup full -u "${PD_IP}:2379" \ --storage "s3://external/backup-20220915?access-key=${access-key}&secret-access-key=${secret-access-key}"

Amazon S3からスナップショットデータを復元する

./br restore full -u "${PD_IP}:2379" \ --storage "s3://external/backup-20220915?access-key=${access-key}&secret-access-key=${secret-access-key}"

スナップショットデータをGCSにバックアップする

./br backup full --pd "${PD_IP}:2379" \ --storage "gcs://external/backup-20220915?credentials-file=${credentials-file-path}"

GCSからスナップショットデータを復元する

./br restore full --pd "${PD_IP}:2379" \ --storage "gcs://external/backup-20220915?credentials-file=${credentials-file-path}"

スナップショット データを Azure Blob Storage にバックアップする

./br backup full -u "${PD_IP}:2379" \ --storage "azure://external/backup-20220915?account-name=${account-name}&account-key=${account-key}"

Azure Blob Storage のスナップショット バックアップ データからtestデータベースを復元する

./br restore db --db test -u "${PD_IP}:2379" \ --storage "azure://external/backup-20220915account-name=${account-name}&account-key=${account-key}"

認証

クラウドstorageシステムにバックアップ データを保存する場合、特定のクラウド サービス プロバイダーに応じて認証パラメータを構成する必要があります。このセクションでは、Amazon S3、GCS、Azure Blob Storage で使用される認証方法と、対応するstorageサービスにアクセスするために使用するアカウントを構成する方法について説明します。

  • Amazon S3
  • GCS
  • Azure Blob Storage

バックアップの前に、S3 上のバックアップ ディレクトリにアクセスするための次の権限を設定します。

  • バックアップ中に TiKV およびバックアップ & リストア ( BR ) がバックアップ ディレクトリs3:GetObjectアクセスするための最小権限: s3:ListBucket s3:DeleteObject s3:PutObject s3:AbortMultipartUpload
  • 復元中に TiKV とBR がバックアップ ディレクトリにアクセスするための最小権限: s3:ListBucket s3:GetObject s3:DeleteObject s3:PutObjectは、チェックポイント情報をバックアップ ディレクトリの下の./checkpointsサブディレクトリに書き込みます。ログ バックアップ データを復元する場合、 BR は、復元されたクラスターのテーブル ID マッピング関係をバックアップ ディレクトリの下の./pitr_id_mapsサブディレクトリに書き込みます。

バックアップディレクトリをまだ作成していない場合は、 バケットを作成するを参考にして指定のリージョンに S3 バケットを作成してください。必要に応じてフォルダを作成するを参考にバケット内にフォルダを作成することもできます。

次のいずれかの方法で S3 へのアクセスを構成することをお勧めします。

  • 方法1: アクセスキーを指定する

    URI にアクセス キーとシークレット アクセス キーを指定すると、指定したアクセス キーとシークレット アクセス キーを使用して認証が行われます。URI でキーを指定する以外に、次の方法もサポートされています。

    • BR は環境変数$AWS_ACCESS_KEY_ID$AWS_SECRET_ACCESS_KEY読み取ります。
    • BR は環境変数$AWS_ACCESS_KEY$AWS_SECRET_KEY読み取ります。
    • BR は、環境変数$AWS_SHARED_CREDENTIALS_FILEで指定されたパスにある共有資格情報ファイルを読み取ります。
    • BR は~/.aws/credentialsパスの共有資格情報ファイルを読み取ります。
  • 方法2: IAMロールに基づくアクセス

    S3 にアクセスできるIAMロールを、TiKV ノードとBRノードが実行される EC2 インスタンスに関連付けます。関連付け後、 BR は追加設定なしで S3 内のバックアップ ディレクトリに直接アクセスできるようになります。

    br backup full --pd "${PD_IP}:2379" \ --storage "s3://${host}/${path}"

アクセス キーを指定して、GCS へのアクセスに使用するアカウントを設定できます。 credentials-fileパラメータを指定すると、指定されたcredentials-fileを使用して認証が行われます。 URI でキーを指定する以外に、次の方法もサポートされています。

  • BRは環境変数$GOOGLE_APPLICATION_CREDENTIALSで指定されたパスのファイルを読み取ります。
  • BR はファイル~/.config/gcloud/application_default_credentials.jsonを読み取ります。
  • BR は、クラスターが GCE または GAE で実行されているときにメタデータサーバーから資格情報を取得します。
  • 方法1: 共有アクセス署名を指定する

    URI にaccount-namesas-tokenを指定すると、指定されたアカウント名と共有アクセス署名 (SAS) トークンを使用して認証が実行されます。SAS トークンには&文字が含まれていることに注意してください。これを URI に追加する前に%26としてエンコードする必要があります。パーセントエンコードを使用してsas-token全体を直接エンコードすることもできます。

  • 方法2: アクセスキーを指定する

    URI にaccount-nameaccount-keyを指定すると、指定したアカウント名とアカウントキーを使用して認証が行われます。 URI にキーを指定する方法の他に、 BR は環境変数$AZURE_STORAGE_KEYからキーを読み取ることもできます。

  • 方法 3: バックアップと復元に Azure AD を使用する

    BR が実行されているノードで環境変数$AZURE_CLIENT_ID 、および$AZURE_CLIENT_SECRET $AZURE_TENANT_ID設定します。

    • TiUPを使用してクラスターを起動すると、TiKV は systemd サービスを使用します。次の例は、TiKV の前述の 3 つの環境変数を構成する方法を示しています。

      注記:

      この方法を使用する場合は、手順 3 で TiKV を再起動する必要があります。クラスターを再起動できない場合は、 「方法 1: バックアップと復元のアクセス キーを指定する」を使用します。

      1. このノードの TiKV ポートが24000 、つまり systemd サービスの名前がtikv-24000であるとします。

        systemctl edit tikv-24000
      2. TiKV 構成ファイルを編集して、次の 3 つの環境変数を構成します。

        [Service] Environment="AZURE_CLIENT_ID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" Environment="AZURE_TENANT_ID=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" Environment="AZURE_CLIENT_SECRET=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      3. 設定を再ロードし、TiKV を再起動します。

        systemctl daemon-reload systemctl restart tikv-24000
    • コマンドラインで起動した TiKV およびBRの Azure AD 情報を構成するには、次のコマンドを実行して、オペレーティング環境で環境変数$AZURE_CLIENT_ID 、および$AZURE_CLIENT_SECRET $AZURE_TENANT_IDされているかどうかを確認するだけです。

      echo $AZURE_CLIENT_ID echo $AZURE_TENANT_ID echo $AZURE_CLIENT_SECRET
    • BRを使用してデータを Azure Blob Storage にバックアップします。

      ./br backup full -u "${PD_IP}:2379" \ --storage "azure://external/backup-20220915?account-name=${account-name}"

サーバー側の暗号化

Amazon S3 サーバー側暗号化

BR は、Amazon S3 にデータをバックアップする際にサーバー側の暗号化をサポートします。また、 BRを使用して S3 サーバー側の暗号化用に作成した AWS KMS キーを使用することもできます。詳細については、 BR S3 サーバー側暗号化参照してください。

Azure Blob Storage サーバー側暗号化

BR は、Azure Blob Storage にデータをバックアップするときに、Azure サーバー側暗号化スコープの指定や暗号化キーの提供をサポートしています。この機能を使用すると、同じstorageアカウントの異なるバックアップ データに対してセキュリティ境界を確立できます。詳細については、 BR Azure Blob Storage サーバー側暗号化参照してください。

storageサービスでサポートされているその他の機能

BR v6.3.0 は AWS S3 オブジェクトロックをサポートしています。この機能を有効にすると、バックアップ データが改ざんされたり削除されたりするのを防ぐことができます。

このページは役に立ちましたか?