バックアップストレージ
TiDB は、Amazon S3、Google Cloud Storage (GCS)、Azure Blob Storage、NFS へのバックアップ データの保存をサポートしています。具体的には、 brのコマンドの--storageまたは-sパラメータにバックアップstorageのURIを指定できます。このドキュメントでは、さまざまな外部storageサービスのURI形式と認証 、およびサーバー側の暗号化を紹介します。
資格情報を TiKV に送信する
| CLIパラメータ | 説明 | デフォルト値 |
|---|---|---|
--send-credentials-to-tikv | BRによって取得された資格情報を TiKV に送信するかどうかを制御します。 | true |
デフォルトでは、Amazon S3、GCS、または Azure Blob Storage をstorageシステムとして使用する場合、 BR は各 TiKV ノードに認証情報を送信します。この動作により構成が簡素化され、パラメータ--send-credentials-to-tikv (つまり-c ) によって制御されます。
この操作はクラウド環境には適用されないことに注意してください。 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]
scheme:s3host:bucket nameparameters:access-key: アクセスキーを指定します。secret-access-key: シークレットアクセスキーを指定します。session-token: 一時セッショントークンを指定します。 BR はまだこのパラメータをサポートしていません。use-accelerate-endpoint: Amazon S3 で加速エンドポイントを使用するかどうかを指定します (デフォルトはfalse)。endpoint: S3 互換サービスのカスタム エンドポイントの URL を指定します (例:<https://s3.example.com/>)。force-path-style: 仮想ホスト型アクセスではなく、パス型アクセスを使用します (デフォルトはtrue)。storage-class: アップロードされたオブジェクトのstorageクラスを指定します (たとえば、STANDARDまたはSTANDARD_IA)。sse: アップロードされたオブジェクトの暗号化に使用されるサーバー側の暗号化アルゴリズムを指定します (値のオプション: `、AES256、またはaws:kms` )。sse-kms-key-id:sseがaws:kmsに設定されている場合、KMS ID を指定します。acl: アップロードされたオブジェクトの既定の ACL を指定します (たとえば、privateまたはauthenticated-read)。role-arn: 指定されたIAMの役割使用してサードパーティの Amazon S3 データにアクセスする必要がある場合、role-arnURL クエリ パラメーター (arn:aws:iam::888888888888:role/my-roleなど) を使用してIAMロールの対応するAmazon リソースネーム (ARN)指定できます。 IAMロールを使用してサードパーティから Amazon S3 データにアクセスする方法の詳細については、 AWS ドキュメントを参照してください。external-id: サードパーティから Amazon S3 データにアクセスする場合、 IAMの役割想定するには正しい外部IDを指定する必要がある場合があります。この場合、このexternal-idURL クエリ パラメーターを使用して外部 ID を指定し、 IAMロールを確実に引き受けることができます。外部 ID は、Amazon S3 データにアクセスするためにIAMロール ARN とともにサードパーティによって提供される任意の文字列です。 IAMロールを引き受ける場合、外部 ID の指定はオプションです。つまり、サードパーティがIAMロールに外部 ID を必要としない場合は、このパラメータを指定せずにIAMロールを引き受けて、対応する Amazon S3 データにアクセスできます。
scheme:gcsまたはgshost:bucket nameparameters:credentials-file: 移行ツール ノード上の認証情報 JSON ファイルへのパスを指定します。storage-class: アップロードされたオブジェクトのstorageクラスを指定します (たとえば、STANDARDまたはCOLDLINE)predefined-acl: アップロードされたオブジェクトの事前定義された ACL を指定します (たとえば、privateまたはproject-private)
scheme:azureまたはazblobhost:container nameparameters:account-name:storageのアカウント名を指定します。account-key: アクセスキーを指定します。access-tier: アップロードされたオブジェクトのアクセス層を指定します (たとえば、Hot、Cool、またはArchive)。デフォルトの値はHotです。
URIの例
このセクションでは、 hostパラメーター (前のセクションではbucket nameまたはcontainer name ) としてexternalを使用した URI の例をいくつか示します。
スナップショット データを 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サービスへのアクセスに使用されるアカウントの構成方法について説明します。
バックアップ前に、S3 上のバックアップ ディレクトリにアクセスするための次の権限を設定します。
- バックアップ中にバックアップ ディレクトリにアクセスするための TiKV およびバックアップ & リストア ( BR ) の最小権限:
s3:ListBucket、s3:PutObject、およびs3:AbortMultipartUpload - TiKV およびBR が復元中にバックアップ ディレクトリにアクセスするための最小権限:
s3:ListBucket、s3:GetObject、およびs3:PutObject。 BR は、チェックポイント情報をバックアップ ディレクトリの下の./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パスの共有資格情報ファイルを読み取ります。
- BR は環境変数
方法 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-nameとaccount-keyを指定した場合は、指定したアクセスキーとシークレットアクセスキーを使用して認証が行われます。 BR は、URI でキーを指定する方法以外に、環境変数$AZURE_STORAGE_KEYからキーを読み取ることもできます。方法 2: バックアップと復元に Azure AD を使用する
BR が実行されているノードで環境変数
$AZURE_CLIENT_ID、$AZURE_TENANT_ID、および$AZURE_CLIENT_SECRETを構成します。TiUPを使用してクラスターが起動されると、TiKV は systemd サービスを使用します。次の例は、TiKV 用に前述の 3 つの環境変数を構成する方法を示しています。
注記:
この方法を使用する場合は、手順 3 で TiKV を再起動する必要があります。クラスターを再起動できない場合は、方法 1: バックアップと復元のアクセス キーを指定するを使用します。
このノードの TiKV ポートが
24000、つまり systemd サービスの名前がtikv-24000であるとします。systemctl edit tikv-24000TiKV 構成ファイルを編集して、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"構成をリロードし、TiKV を再起動します。
systemctl daemon-reload systemctl restart tikv-24000
コマンド ラインを使用して TiKV およびBRの Azure AD 情報を構成するには、次のコマンドを実行して、環境変数
$AZURE_CLIENT_ID、$AZURE_TENANT_ID、および$AZURE_CLIENT_SECRETがオペレーティング環境で構成されているかどうかを確認するだけです。echo $AZURE_CLIENT_ID echo $AZURE_TENANT_ID echo $AZURE_CLIENT_SECRETBRを使用してデータを 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 サーバー側暗号化を参照してください。
storageサービスでサポートされるその他の機能
BR v6.3.0 は AWS S3 オブジェクトロックをサポートします。この機能を有効にすると、バックアップ データの改ざんや削除を防ぐことができます。