重要

古いバージョンの TiDB データベース (TiDB {{ curdocVersion }}) のドキュメントを表示しています。

TiDBデータベースの最新の安定バージョンを使用することをお勧めします。
重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

外部ストレージ

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

スキーム

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

サービススキームURLの例
すべてのノードに分散されたローカルファイルシステムローカルlocal:///path/to/dest/
AmazonS3と互換性のあるサービスs3s3://bucket-name/prefix/of/dest/
Google Cloud Storage(GCS)gcs、gsgcs://bucket-name/prefix/of/dest/
Azure Blob Storage紺碧、azblobazure://container-name/prefix/of/dest/
どこにも書きません(ベンチマークのみ)noopnoop://

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?region=us-west-2'
    
  • 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?region=us-west-2'
    
  • 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'
    
  • 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'
    

S3URLパラメータ

URLパラメータ説明
access-keyアクセスキー
secret-access-key秘密のアクセスキー
regionAmazon S3のサービスリージョン(デフォルトはus-east-1
use-accelerate-endpointAmazon S3でアクセラレーションエンドポイントを使用するかどうか(デフォルトはfalse
endpointS3互換サービスのカスタムエンドポイントのURL(たとえば、 https://s3.example.com/
force-path-style仮想ホストスタイルアクセスではなく、パススタイルアクセスを使用します(デフォルトはfalse
storage-classアップロードされたオブジェクトのストレージクラス( STANDARD_IA STANDARD
sseアップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム(空、 AES256またはaws:kms
sse-kms-key-idsseaws:kmsに設定されている場合、KMSIDを指定します
aclアップロードされたオブジェクトのauthenticated-read private

ノート:

アクセスキーとシークレットアクセスキーはプレーンテキストで記録されるため、ストレージURLに直接渡すことはお勧めしません。移行ツールは、次の順序で環境からこれらのキーを推測しようとします。

  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. AmazonEC2コンテナの現在のIAMの役割
  6. AmazonECSタスクの現在のIAMの役割

GCSURLパラメータ

URLパラメータ説明
credentials-fileツールノードのクレデンシャルJSONファイルへのパス
storage-classアップロードされたオブジェクトのストレージクラス( COLDLINE STANDARD
predefined-aclアップロードされたオブジェクトの事前定義されたproject-private private

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

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

AzblobURLパラメーター

URLパラメータ説明
account-nameストレージのアカウント名
account-keyアクセスキー
access-tierアップロードされたオブジェクトのArchive層( CoolHot )。 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)を使用してアクセスできます。
      • $AZURE_CLIENT_ID 、および$AZURE_TENANT_IDは、 $AZURE_CLIENT_SECRET AzureアプリケーションのアプリケーションID client_id 、テナントID tenant_id 、およびクライアントパスワードclient_secretを参照します。
      • オペレーティングシステムが$AZURE_CLIENT_ID 、および$AZURE_TENANT_IDを構成しているかどうかを確認する方法、またはこれらの変数をパラメーターとして構成する必要がある場合は、 $AZURE_CLIENT_SECRETを参照して環境変数をパラメーターとして構成する
  3. 上記の3つの環境変数がBRノードで構成されていない場合、BRはアクセスキーを使用して$AZURE_STORAGE_KEYを読み取ろうとします。

ノート:

Azure Blob Storageを外部ストレージとして使用する場合は、 send-credentials-to-tikv = true (デフォルトで設定)を設定する必要があります。そうしないと、バックアップタスクが失敗します。

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

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

./dumpling -u root -h 127.0.0.1 -P 3306 -B mydb -F 256MiB \
    -o 's3://my-bucket/sql-backup' \
    --s3.region 'us-west-2'

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

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

コマンドラインパラメータ説明
--s3.regionAmazonS3のサービスリージョン。デフォルトはus-east-1です。
--s3.endpointS3互換サービスのカスタムエンドポイントのURL。たとえば、 https://s3.example.com/
--s3.storage-classアップロードオブジェクトのストレージクラス。たとえば、 STANDARDSTANDARD_IA
--s3.sseアップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム。値のオプションは空で、 AES256aws:kmsです。
--s3.sse-kms-key-id--s3.sseaws:kmsとして設定されている場合、このパラメータはKMSIDを指定するために使用されます。
--s3.aclアップロードオブジェクトの固定ACL。たとえば、 privateauthenticated-read
--s3.providerS3互換サービスのタイプ。サポートされているotherは、 awsnetease ceph alibaba

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

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

    ./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を使用してAlibabaCloudOSSにデータをバックアップします。

    ./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
    
  • TiDBLightningを使用してAlibabaCloudOSSにデータをエクスポートします。 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-classSTANDARDCOLDLINEなどのアップロードオブジェクトのストレージタイプ。
--gcs.predefined-aclprivateproject-privateなどのアップロードオブジェクトの事前定義されたACL。

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

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

BRがTiKVにクレデンシャルを送信

デフォルトでは、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;

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