外部ストレージ
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と互換性のあるサービス | s3 | s3://bucket-name/prefix/of/dest/ |
| Google Cloud Storage(GCS) | gcs、gs | gcs://bucket-name/prefix/of/dest/ |
| Azure Blob Storage | 紺碧、azblob | azure://container-name/prefix/of/dest/ |
| どこにも書きません(ベンチマークのみ) | noop | 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?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 | 秘密のアクセスキー |
region | Amazon S3のサービスリージョン(デフォルトはus-east-1 ) |
use-accelerate-endpoint | Amazon S3でアクセラレーションエンドポイントを使用するかどうか(デフォルトはfalse ) |
endpoint | S3互換サービスのカスタムエンドポイントのURL(たとえば、 https://s3.example.com/ ) |
force-path-style | 仮想ホストスタイルアクセスではなく、パススタイルアクセスを使用します(デフォルトはfalse ) |
storage-class | アップロードされたオブジェクトのストレージクラス( STANDARD_IA STANDARD |
sse | アップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム(空、 AES256またはaws:kms ) |
sse-kms-key-id | sseがaws:kmsに設定されている場合、KMSIDを指定します |
acl | アップロードされたオブジェクトのauthenticated-read private |
ノート:
アクセスキーとシークレットアクセスキーはプレーンテキストで記録されるため、ストレージURLに直接渡すことはお勧めしません。移行ツールは、次の順序で環境からこれらのキーを推測しようとします。
$AWS_ACCESS_KEY_IDおよび$AWS_SECRET_ACCESS_KEYの環境変数$AWS_ACCESS_KEYおよび$AWS_SECRET_KEYの環境変数$AWS_SHARED_CREDENTIALS_FILE環境変数で指定されたパスにあるツールノードの共有クレデンシャルファイル~/.aws/credentialsのツールノードにある共有クレデンシャルファイル- AmazonEC2コンテナの現在のIAMの役割
- AmazonECSタスクの現在のIAMの役割
GCSURLパラメータ
| URLパラメータ | 説明 |
|---|---|
credentials-file | ツールノードのクレデンシャルJSONファイルへのパス |
storage-class | アップロードされたオブジェクトのストレージクラス( COLDLINE STANDARD |
predefined-acl | アップロードされたオブジェクトの事前定義されたproject-private private |
credentials-fileが指定されていない場合、移行ツールは次の順序で環境から資格情報を推測しようとします。
$GOOGLE_APPLICATION_CREDENTIALS環境変数で指定されたパスにあるツールノード上のファイルの内容~/.config/gcloud/application_default_credentials.jsonのツールノード上のファイルの内容- GCEまたはGAEで実行している場合、メタデータサーバーから取得した資格情報。
AzblobURLパラメーター
| URLパラメータ | 説明 |
|---|---|
account-name | ストレージのアカウント名 |
account-key | アクセスキー |
access-tier | アップロードされたオブジェクトのArchive層( Cool 、 Hot )。 access-tierが設定されていない(値が空の)場合、値はデフォルトでHotです。 |
TiKVとBRが同じストレージアカウントを使用することを保証するために、BRはaccount-nameの値を決定します。つまり、デフォルトではsend-credentials-to-tikv = trueが設定されています。 BRは、次の順序で環境からこれらのキーを推測します。
account-nameとaccount-keyの両方が指定されている場合、このパラメーターで指定されたキーが使用されます。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_SECRETAzureアプリケーションのアプリケーションIDclient_id、テナントIDtenant_id、およびクライアントパスワードclient_secretを参照します。- オペレーティングシステムが
$AZURE_CLIENT_ID、および$AZURE_TENANT_IDを構成しているかどうかを確認する方法、またはこれらの変数をパラメーターとして構成する必要がある場合は、$AZURE_CLIENT_SECRETを参照して環境変数をパラメーターとして構成する 。
- BRは、最初に
- 上記の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.region | AmazonS3のサービスリージョン。デフォルトはus-east-1です。 |
--s3.endpoint | S3互換サービスのカスタムエンドポイントのURL。たとえば、 https://s3.example.com/ 。 |
--s3.storage-class | アップロードオブジェクトのストレージクラス。たとえば、 STANDARDとSTANDARD_IA 。 |
--s3.sse | アップロードの暗号化に使用されるサーバー側の暗号化アルゴリズム。値のオプションは空で、 AES256とaws:kmsです。 |
--s3.sse-kms-key-id | --s3.sseがaws:kmsとして設定されている場合、このパラメータはKMSIDを指定するために使用されます。 |
--s3.acl | アップロードオブジェクトの固定ACL。たとえば、 privateとauthenticated-read 。 |
--s3.provider | S3互換サービスのタイプ。サポートされているotherは、 aws 、 netease 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 256MiBBRを使用して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.logTiDBLightningを使用して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-class | STANDARDやCOLDLINEなどのアップロードオブジェクトのストレージタイプ。 |
--gcs.predefined-acl | privateやproject-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ではサポートされていません。