外部ストレージ
Backup & Restore (BR)、 TiDB Lightning、およびDumplingは、ローカル ファイルシステムと Amazon S3 でのデータの読み取りと書き込みをサポートしています。 BR は、 Google クラウド ストレージ (GCS)およびAzure ブロブ ストレージ (Azblob)でのデータの読み取りと書き込みもサポートします。これらは、BR に渡される--storageパラメータ、 TiDB Lightningに渡される-dパラメータ、およびDumplingに渡される--output ( -o ) パラメータの URL スキームによって区別されます。
スキーム
次のサービスがサポートされています。
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'
S3 URL パラメータ
ノート:
アクセス キーとシークレット アクセス キーをストレージ URL に直接渡すことはお勧めしません。これらのキーはプレーン テキストでログに記録されるためです。
アクセス キーとシークレット アクセス キーが指定されていない場合、移行ツールは次の順序で環境からこれらのキーを推測しようとします。
$AWS_ACCESS_KEY_IDおよび$AWS_SECRET_ACCESS_KEYの環境変数$AWS_ACCESS_KEYおよび$AWS_SECRET_KEYの環境変数$AWS_SHARED_CREDENTIALS_FILE環境変数で指定されたパスにあるツール ノード上の共有資格情報ファイル~/.aws/credentialsのツール ノード上の共有資格情報ファイル- Amazon EC2 コンテナの現在のIAMロール
- Amazon ECS タスクの現在のIAMロール
GCS URL パラメータ
credentials-fileが指定されていない場合、移行ツールは次の順序で環境から資格情報を推測しようとします。
$GOOGLE_APPLICATION_CREDENTIALS環境変数で指定されたパスにあるツール ノード上のファイルの内容~/.config/gcloud/application_default_credentials.jsonのツール ノード上のファイルの内容- GCE または GAE で実行している場合、資格情報はメタデータサーバーから取得されます。
Azblob URL パラメーター
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) を使用して変数にアクセスできるようにします。- 上記の 3 つの環境変数が BR ノードで構成されていない場合、BR はアクセス キーを使用して
$AZURE_STORAGE_KEYを読み取ろうとします。
ノート:
- Azure Blob Storage を外部ストレージとして使用する場合は、
send-credentials-to-tikv = trueを設定する必要があります (既定で設定されています)。そうしないと、バックアップ タスクが失敗します。$AZURE_CLIENT_IDは、$AZURE_CLIENT_SECRETAzure アプリケーションのアプリケーション ID$AZURE_TENANT_ID、テナント IDclient_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.region 'us-west-2'
URL パラメーターとコマンド ライン パラメーターを同時に指定した場合、URL パラメーターはコマンド ライン パラメーターによって上書きされます。
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 256MiBBR を使用してデータを 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.logTiDB Lightningを使用して Alibaba Cloud OSS にデータをエクスポートします。 YAML 形式の構成ファイルで次の内容を指定する必要があります。
[mydumper] data-source-dir = "s3://my-bucket/dumpling/?endpoint=http://oss-cn-hangzhou-internal.aliyuncs.com&provider=alibaba"
GCS コマンドライン パラメータ
Azblob コマンド ライン パラメーター
| |コマンドライン パラメータ |説明 | | | --azblob.account-name |ストレージのアカウント名 | | | --azblob.account-key |アクセスキー | | | --azblob.access-tier |アップロードされたオブジェクトのアクセス層 (例: Hot 、 Cool 、 Archive )。 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;
このオプションは、 TiDB LightningおよびDumplingではサポートされていません。これは、2 つのアプリケーションが現在スタンドアロンであるためです。