外部ストレージ

br コマンドライン ツール、 TiDB Lightning、およびDumplingは、ローカル ファイル システムと Amazon S3 でのデータの読み取りと書き込みをサポートします。 br コマンドライン ツールは、Google Cloud Storage (GCS) と Azure Blob Storage (Azblob) でのデータの読み取りと書き込みもサポートしています。これらは、 br コマンドライン ツールに渡される--storage ( -s ) パラメータ、 TiDB Lightningに渡される-dパラメータ、およびDumplingに渡される--output ( -o ) パラメータの URL スキームによって区別されます。

スキーム

次のサービスがサポートされています。

サービス図式URL の例
すべてのノードに分散されたローカル ファイル システムローカルlocal:///path/to/dest/
Amazon S3 と互換性のあるサービスs3s3://bucket-name/prefix/of/dest/
Google クラウド ストレージ (GCS)gcs、gsgcs://bucket-name/prefix/of/dest/
Azure ブロブ ストレージ紺碧、アズブロブazure://container-name/prefix/of/dest/
どこにも書き込みません (ベンチマーク専用)ヌープnoop://

URL パラメータ

S3、GCS、Azblob などのクラウド ストレージでは、接続のために追加の構成が必要になる場合があります。このような構成のパラメーターを指定できます。例えば:

  • Dumplingを使用してデータを S3 にエクスポートします。

    ./dumpling -u root -h 127.0.0.1 -P 3306 -B mydb -F 256MiB \ -o 's3://my-bucket/sql-backup'
  • TiDB Lightningを使用して S3 からデータをインポートします。

    ./tidb-lightning --tidb-port=4000 --pd-urls=127.0.0.1:2379 --backend=local --sorted-kv-dir=/tmp/sorted-kvs \ -d 's3://my-bucket/sql-backup'
  • TiDB Lightningを使用して S3 からデータをインポートします (パス スタイルのリクエストを使用)。

    ./tidb-lightning --tidb-port=4000 --pd-urls=127.0.0.1:2379 --backend=local --sorted-kv-dir=/tmp/sorted-kvs \ -d 's3://my-bucket/sql-backup?force-path-style=true&endpoint=http://10.154.10.132:8088'
  • TiDB Lightningを使用して S3 からデータをインポートします (特定のIAMロールを使用して S3 データにアクセスします)。

    ./tidb-lightning --tidb-port=4000 --pd-urls=127.0.0.1:2379 --backend=local --sorted-kv-dir=/tmp/sorted-kvs \ -d 's3://my-bucket/test-data?role-arn=arn:aws:iam::888888888888:role/my-role'
  • br コマンドライン ツールを使用して、データを GCS にバックアップします。

    ./br backup full -u 127.0.0.1:2379 \ -s 'gcs://bucket-name/prefix'
  • br コマンドライン ツールを使用して、データを Azblob にバックアップします。

    ./br backup full -u 127.0.0.1:2379 \ -s 'azure://container-name/prefix'

S3 URL パラメータ

URL パラメータ説明
access-keyアクセスキー
secret-access-keyシークレット アクセス キー
use-accelerate-endpointAmazon S3 で加速エンドポイントを使用するかどうか (デフォルトはfalse )
endpointS3 互換サービスのカスタム エンドポイントの URL (例: https://s3.example.com/ )
force-path-style仮想ホスト スタイルのリクエストではなく、パス スタイルのリクエストを使用します (デフォルトはtrue )。
storage-classアップロードされたオブジェクトのストレージ クラス (例: STANDARDSTANDARD_IA )
sseアップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム (空、 AES256またはaws:kms )
sse-kms-key-idsseaws:kmsに設定されている場合、KMS ID を指定します
aclアップロードされたオブジェクトの既定の ACL (例: privateauthenticated-read )
role-arn指定されたIAMロールを使用してサードパーティから Amazon S3 データにアクセスする必要がある場合、 arn:aws:iam::888888888888:role/my-roleなどのrole-arnパラメータを使用してIAMロールの対応するAmazon リソースネーム (ARN)を指定できます。詳細については、 サードパーティが所有する AWS アカウントへのアクセスを提供するを参照してください。
external-idサードパーティから Amazon S3 データにアクセスする場合、正しい外部 IDを指定してIAMロールを想定する必要がある場合があります。この場合、このexternal-idの URL クエリ パラメータを使用して、外部 ID を指定できます。外部 ID は、Amazon S3 データにアクセスするためにIAMロール ARN とともにサードパーティによって提供される任意の文字列です。 IAMロールを引き受ける際の外部 ID の提供はオプションです。つまり、サードパーティがIAMロールの外部 ID を指定していない場合、ロールを引き受けて、このパラメーターを提供しなくても対応する S3 データにアクセスできます。

ノート:

アクセス キーとシークレット アクセス キーをストレージ URL に直接渡すことはお勧めしません。これらのキーはプレーン テキストとして格納されるためです。

アクセスキーとシークレットアクセスキー、またはIAMロール ARN ( role-arn ) と外部 ID ( external-id ) のいずれも提供されていない場合、移行ツールは次の順序で環境からこれらのキーを検索します。

  1. $AWS_ACCESS_KEY_IDおよび$AWS_SECRET_ACCESS_KEYの環境変数
  2. $AWS_ACCESS_KEYおよび$AWS_SECRET_KEYの環境変数
  3. $AWS_SHARED_CREDENTIALS_FILE環境変数で指定されたパスにあるツール ノード上の共有資格情報ファイル
  4. ~/.aws/credentialsのツール ノード上の共有資格情報ファイル
  5. Amazon EC2 コンテナの現在のIAMロール
  6. Amazon ECS タスクの現在のIAMロール

GCS URL パラメータ

URL パラメータ説明
credentials-fileツール ノードの資格情報 JSON ファイルへのパス
storage-classアップロードされたオブジェクトのストレージ クラス (例: STANDARDCOLDLINE )
predefined-aclアップロードされたオブジェクトの定義済み ACL (例: privateproject-private )

credentials-fileが指定されていない場合、移行ツールは次の順序で環境から資格情報を検索します。

  1. $GOOGLE_APPLICATION_CREDENTIALS環境変数で指定されたパスにあるツール ノード上のファイルの内容
  2. ~/.config/gcloud/application_default_credentials.jsonのツール ノード上のファイルの内容
  3. GCE または GAE で実行している場合、資格情報はメタデータサーバーから取得されます。

Azblob URL パラメーター

URL パラメータ説明
account-nameストレージのアカウント名
account-keyアクセスキー
access-tierアップロードされたオブジェクトのアクセス層 (例: HotCoolArchive )。 access-tierが設定されていない (値が空である) 場合、デフォルトの値はHotです。

TiKV と br が同じストレージ アカウントを使用するようにするために、 br はaccount-nameの値を決定します。つまり、デフォルトでsend-credentials-to-tikv = trueが設定されています。 br は、次の順序で環境からこれらのキーを検索します。

  1. account-nameaccount-keyの両方を指定すると、このパラメーターで指定されたキーが使用されます。
  2. account-keyが指定されていない場合、br は br ノードの環境変数から関連する資格情報を読み取ろうとします。 br は、最初に$AZURE_CLIENT_ID$AZURE_TENANT_ID 、および$AZURE_CLIENT_SECRETを読み取ります。同時に、br により、TiKV はこれら 3 つの環境変数をそれぞれのノードから読み取り、Azure AD (Azure Active Directory) を使用して変数にアクセスできるようになります。
  3. 上記の 3 つの環境変数が br ノードで構成されていない場合、br はアクセス キーを使用して$AZURE_STORAGE_KEYを読み取ろうとします。

ノート:

  • Azure Blob Storage を外部ストレージとして使用する場合は、 send-credentials-to-tikv = trueを設定する必要があります (既定で設定されています)。そうしないと、バックアップ タスクが失敗します。
  • $AZURE_CLIENT_IDは、 $AZURE_CLIENT_SECRET Azure アプリケーションのアプリケーション ID $AZURE_TENANT_ID 、テナント ID client_id 、クライアント パスワードtenant_idを示しclient_secret 。 3 つの環境変数の存在を確認する方法、または環境変数をパラメータとして設定する方法については、 認証を参照してください。

コマンドライン パラメータ

URL パラメーターに加えて、br とDumplingは、コマンドライン パラメーターを使用したこれらの構成の指定もサポートしています。例えば:

./dumpling -u root -h 127.0.0.1 -P 3306 -B mydb -F 256MiB \ -o 's3://my-bucket/sql-backup' \ --s3.role-arn="arn:aws:iam::888888888888:role/my-role"

上記のコマンドは、次のコマンドと同等です。

./dumpling -u root -h 127.0.0.1 -P 3306 -B mydb -F 256MiB \ -o 's3://my-bucket/sql-backup&role-arn=arn:aws:iam::888888888888:role/my-role'

URL パラメーターとコマンド ライン パラメーターを同時に指定した場合、URL パラメーターはコマンド ライン パラメーターによって上書きされます。

S3 コマンドライン パラメータ

コマンドライン パラメータ説明
--s3.endpointS3 互換サービスのカスタム エンドポイントの URL (例: https://s3.example.com/ )
--s3.storage-classアップロード オブジェクトのストレージ クラス (例: STANDARDまたはSTANDARD_IA )
--s3.sseアップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム (値のオプションは空、 AES256およびaws:kms )
--s3.sse-kms-key-id--s3.sseaws:kmsとして構成されている場合、このパラメーターを使用して KMS ID を指定します。
--s3.aclアップロード オブジェクトの既定の ACL (例: privateまたはauthenticated-read )
--s3.providerS3 互換サービスのタイプ (サポートされているタイプはawsalibabacephnetease 、およびotherです)
--s3.role-arn指定されたIAMロールを使用してサードパーティから Amazon S3 データにアクセスする必要がある場合は、対応するAmazon リソースネーム (ARN)のIAMロールを--s3.role-arnオプション ( arn:aws:iam::888888888888:role/my-roleなど) で指定できます。詳細については、 AWS ドキュメントを参照してください。
--s3.external-idサードパーティから Amazon S3 データにアクセスする場合、正しい外部 IDを指定してIAMロールを想定する必要がある場合があります。この場合、この--s3.external-idオプションを使用して外部 ID を指定できます。外部 ID は、Amazon S3 データにアクセスするためにIAMロール ARN とともにサードパーティによって提供される任意の文字列です。 IAMロールを引き受ける際の外部 ID の提供はオプションです。つまり、サードパーティがIAMロールの外部 ID を指定していない場合、ロールを引き受けて、このパラメーターを提供しなくても対応する S3 データにアクセスできます。

非 AWS S3 クラウド ストレージにデータをエクスポートするには、クラウド プロバイダーと使用するかどうかを指定しますvirtual-hosted style 。次の例では、データは Alibaba Cloud OSS ストレージにエクスポートされます。

  • Dumplingを使用して Alibaba Cloud OSS にデータをエクスポートします。

    ./dumpling -h 127.0.0.1 -P 3306 -B mydb -F 256MiB \ -o "s3://my-bucket/dumpling/" \ --s3.endpoint="http://oss-cn-hangzhou-internal.aliyuncs.com" \ --s3.provider="alibaba" \ -r 200000 -F 256MiB
  • br コマンドライン ツールを使用して、Alibaba Cloud OSS にデータをバックアップします。

    ./br backup full --pd "127.0.0.1:2379" \ --storage "s3://my-bucket/full/" \ --s3.endpoint="http://oss-cn-hangzhou-internal.aliyuncs.com" \ --s3.provider="alibaba" \ --send-credentials-to-tikv=true \ --ratelimit 128 \ --log-file backuptable.log
  • TiDB Lightningを使用して Alibaba Cloud OSS にデータをエクスポートします。 YAML 構成ファイルで次の内容を指定する必要があります。

    [mydumper] data-source-dir = "s3://my-bucket/dumpling/?endpoint=http://oss-cn-hangzhou-internal.aliyuncs.com&provider=alibaba"

GCS コマンドライン パラメータ

コマンドライン パラメータ説明
--gcs.credentials-fileツール ノードの資格情報 JSON ファイルへのパス
--gcs.storage-classアップロード オブジェクトのストレージ クラス (例: STANDARDまたはCOLDLINE )
--gcs.predefined-aclアップロードされたオブジェクトの定義済み ACL (例: privateまたはproject-private )

Azblob コマンド ライン パラメーター

コマンドライン パラメータ説明
--azblob.account-nameストレージのアカウント名
--azblob.account-keyアクセスキー
--azblob.access-tierアップロードされたオブジェクトのアクセス層 (例: HotCoolArchive )。 access-tierが設定されていない (値が空である) 場合、デフォルトの値はHotです。

TiKV に資格情報を送信する br コマンドライン ツール

デフォルトでは、S3、GCS、または Azblob の宛先を使用する場合、br コマンドライン ツールはすべての TiKV ノードに資格情報を送信して、セットアップの複雑さを軽減します。

ただし、これは、すべてのノードが独自の役割と権限を持つクラウド環境には適していません。このような場合、 --send-credentials-to-tikv=false (または短い形式の-c=0 ) を使用して資格情報の送信を無効にする必要があります。

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

バックアップする戻すのデータに SQL ステートメントを使用する場合、 SEND_CREDENTIALS_TO_TIKV = FALSEオプションを追加できます。

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

TiDB LightningおよびDumplingは現在スタンドアロンであるため、このオプションはサポートされていません。

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