TiDB Cloud Serverless からデータをエクスポート
TiDB Cloud Serverless Export (ベータ版) は、 TiDB Cloud Serverless クラスターからローカル ファイルまたは外部storageサービスにデータをエクスポートできるサービスです。エクスポートされたデータは、バックアップ、移行、データ分析などの目的で使用できます。
mysqlダンプや TiDB Dumplingなどのツールを使用してデータをエクスポートすることもできますが、 TiDB Cloud Serverless Export を使用すると、 TiDB Cloud Serverless クラスターからデータをエクスポートするより便利で効率的な方法が提供されます。これには次の利点があります。
- 利便性: エクスポート サービスは、 TiDB Cloud Serverless クラスターからデータをエクスポートするためのシンプルで使いやすい方法を提供するため、追加のツールやリソースは必要ありません。
- 分離: エクスポート サービスは個別のコンピューティング リソースを使用するため、オンライン サービスで使用されるリソースからの分離が保証されます。
- 一貫性: エクスポート サービスは、ロックを発生させることなくエクスポートされたデータの一貫性を確保するため、オンライン サービスには影響しません。
エクスポート場所
次の場所にデータをエクスポートできます。
ローカルファイル
外部storageには以下が含まれます:
注記:
エクスポートするデータのサイズが大きい場合(100 GiB 以上)は、外部storageにエクスポートすることをお勧めします。
ローカルファイル
TiDB Cloud Serverless クラスターからローカル ファイルにデータをエクスポートするには、データTiDB Cloudコンソールを使用するまたはTiDB CloudCLIを使用するエクスポートし、 TiDB Cloud CLI を使用してエクスポートしたデータをダウンロードする必要があります。
データをローカル ファイルにエクスポートする場合、次の制限があります。
- TiDB Cloudコンソールを使用してエクスポートされたデータをダウンロードすることはサポートされていません。
- エクスポートされたデータはTiDB Cloudのスタッシング領域に保存され、2 日後に期限切れになります。エクスポートされたデータは時間内にダウンロードする必要があります。
- スタッシング領域のstorageスペースがいっぱいの場合、データをローカル ファイルにエクスポートすることはできません。
アマゾンS3
データを Amazon S3 にエクスポートするには、次の情報を提供する必要があります。
- URI:
s3://<bucket-name>/<file-path>
- 次のアクセス資格情報のいずれか:
詳細についてはTiDB Cloud Serverless の外部ストレージ アクセスを構成する参照してください。
Google クラウド ストレージ
データを Google Cloud Storage にエクスポートするには、次の情報を提供する必要があります。
- URI:
gs://<bucket-name>/<file-path>
- アクセス認証情報: バケットのbase64 エンコードされたサービスアカウントキーサービス アカウント キーに
storage.objects.create
権限があることを確認してください。
詳細についてはTiDB Serverless の外部ストレージ アクセスを構成する参照してください。
注記:
現在、Google Cloud Storage にエクスポートできるのはTiDB CloudCLIのみです。
Azure BLOB ストレージ
Azure Blob Storage にデータをエクスポートするには、次の情報を提供する必要があります。
- URI:
azure://<account-name>.blob.core.windows.net/<container-name>/<file-path>
- アクセス資格情報: Azure Blob Storage コンテナーの場合は共有アクセス署名 (SAS) トークントークンに、
Container
およびObject
リソースに対するRead
およびWrite
アクセス許可があることを確認します。
詳細についてはTiDB Serverless の外部ストレージ アクセスを構成する参照してください。
注記:
現在、Azure Blob Storage にエクスポートできるのはTiDB CloudCLIのみです。
エクスポートオプション
データのフィルタリング
- TiDB Cloudコンソールは、選択したデータベースとテーブルを含むデータのエクスポートをサポートしています。
- TiDB Cloud CLI は、SQL ステートメントとテーブルフィルター使用したデータのエクスポートをサポートしています。
データ形式
次の形式でデータをエクスポートできます。
SQL
: SQL 形式でデータをエクスポートします。CSV
: CSV 形式でデータをエクスポートします。次のオプションを指定できます。delimiter
: エクスポートされたデータで使用する区切り文字を指定します。デフォルトの区切り文字は"
です。separator
: エクスポートされたデータ内のフィールドを区切るために使用される文字を指定します。デフォルトの区切り文字は,
です。header
: エクスポートされたデータにヘッダー行を含めるかどうかを指定します。デフォルト値はtrue
です。null-value
: エクスポートされたデータ内の NULL 値を表す文字列を指定します。デフォルト値は\N
です。
Parquet
: Parquet 形式でデータをエクスポートします。現在は、 TiDB Cloud CLI でのみサポートされています。
スキーマとデータは、次の命名規則に従ってエクスポートされます。
アイテム | 圧縮されていない | 圧縮 |
---|---|---|
データベーススキーマ | {データベース}-スキーマ作成.sql | {データベース}-schema-create.sql.{圧縮タイプ} |
テーブルスキーマ | {データベース}.{テーブル}-schema.sql | {データベース}.{テーブル}-schema.sql.{圧縮タイプ} |
データ | {データベース}.{テーブル}.{0001}.{csv | parquet |
データ圧縮
次のアルゴリズムを使用して、エクスポートされた CSV および SQL データを圧縮できます。
gzip
(デフォルト): エクスポートされたデータをgzip
で圧縮します。snappy
: エクスポートされたデータをsnappy
で圧縮します。zstd
: エクスポートされたデータをzstd
で圧縮します。none
: エクスポートしたdata
圧縮しません。
次のアルゴリズムを使用して、エクスポートされた Parquet データを圧縮できます。
zstd
(デフォルト): Parquet ファイルをzstd
で圧縮します。gzip
: Parquet ファイルをgzip
で圧縮します。snappy
: Parquet ファイルをsnappy
で圧縮します。none
: Parquet ファイルを圧縮しません。
データ変換
データを Parquet 形式にエクスポートする場合、 TiDB Cloud Serverless と Parquet 間のデータ変換は次のようになります。
TiDB Cloudサーバーレスタイプ | Parquest プリミティブ型 | Parquet 論理型 |
---|---|---|
バルチャー | バイト配列 | 文字列(UTF8) |
時間 | バイト配列 | 文字列(UTF8) |
小さなテキスト | バイト配列 | 文字列(UTF8) |
中テキスト | バイト配列 | 文字列(UTF8) |
TEXT | バイト配列 | 文字列(UTF8) |
長文 | バイト配列 | 文字列(UTF8) |
セット | バイト配列 | 文字列(UTF8) |
翻訳 | バイト配列 | 文字列(UTF8) |
日付 | バイト配列 | 文字列(UTF8) |
文字 | バイト配列 | 文字列(UTF8) |
ベクター | バイト配列 | 文字列(UTF8) |
小数点(1<=p<=9) | INT32 | 10進数(p,s) |
小数点(10<=p<=18) | INT64 | 10進数(p,s) |
小数点(p>=19) | バイト配列 | 文字列(UTF8) |
列挙 | バイト配列 | 文字列(UTF8) |
タイムスタンプ | INT64 | TIMESTAMP(単位=MICROS、isAdjustedToUTC=false) |
日時 | INT64 | TIMESTAMP(単位=MICROS、isAdjustedToUTC=false) |
年 | INT32 | / |
小さな | INT32 | / |
符号なし TINYINT | INT32 | / |
スモールイント | INT32 | / |
符号なし小整数 | INT32 | / |
ミディアムミント | INT32 | / |
未署名のメディアミント | INT32 | / |
内部 | INT32 | / |
符号なし整数 | 固定長バイト配列(9) | 10進数(20,0) |
ビッグイント | 固定長バイト配列(9) | 10進数(20,0) |
符号なしBIGINT | バイト配列 | 文字列(UTF8) |
フロート | フロート | / |
ダブル | ダブル | / |
ブロブ | バイト配列 | / |
タイニーブロブ | バイト配列 | / |
ミディアムブロブ | バイト配列 | / |
ロングロブ | バイト配列 | / |
バイナリ | バイト配列 | / |
バイナリ | バイト配列 | / |
少し | バイト配列 | / |
例
データをローカルファイルにエクスポートする
- Console
- CLI
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
複数のプロジェクトがある場合は、
左下隅にある をクリックして、別のプロジェクトに切り替えます。 ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
インポートページで、右上隅の[データのエクスポート先]をクリックし、ドロップダウン リストから[ローカル ファイル]を選択します。次のパラメータを入力します。
タスク名: エクスポート タスクの名前を入力します。デフォルト値は
SNAPSHOT_{snapshot_time}
です。エクスポートされたデータ: エクスポートするデータベースとテーブルを選択します。
データ形式: SQL ファイルまたはCSV を選択します。
圧縮: Gzip 、 Snappy 、 Zstd 、またはなしを選択します。
ヒント:
クラスターでこれまでにデータをインポートまたはエクスポートしたことがない場合は、ページの下部にある [データをエクスポートするには**、ここをクリックします...]**をクリックしてデータをエクスポートする必要があります。
[エクスポート]をクリックします。
エクスポート タスクが成功したら、エクスポート タスクの詳細に表示されるダウンロード コマンドをコピーし、 TiDB CloudCLIでコマンドを実行してエクスポートされたデータをダウンロードできます。
エクスポート タスクを作成します。
ticloud serverless export create -c <cluster-id>出力からエクスポート ID が取得されます。
エクスポート タスクが成功したら、エクスポートされたデータをローカル ファイルにダウンロードします。
ticloud serverless export download -c <cluster-id> -e <export-id>ダウンロードコマンドの詳細については、 ticloud サーバーレス エクスポート ダウンロード参照してください。
Amazon S3にデータをエクスポートする
- Console
- CLI
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
複数のプロジェクトがある場合は、
左下隅にある をクリックして、別のプロジェクトに切り替えます。 ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
インポートページで、右上隅の[データのエクスポート先]をクリックし、ドロップダウン リストから [ **Amazon S3]**を選択します。次のパラメータを入力します。
- タスク名: エクスポート タスクの名前を入力します。デフォルト値は
SNAPSHOT_{snapshot_time}
です。 - エクスポートされたデータ: エクスポートするデータベースとテーブルを選択します。
- データ形式: SQL ファイルまたはCSV を選択します。
- 圧縮: Gzip 、 Snappy 、 Zstd 、またはなしを選択します。
- フォルダー URI :
s3://<bucket-name>/<folder-path>/
形式で Amazon S3 の URI を入力します。 - バケット アクセス: 次のアクセス資格情報のいずれかを選択し、資格情報を入力します。資格情報がない場合は、 TiDB Cloud Serverless の外部ストレージ アクセスを構成する参照してください。
- AWS ロール ARN : バケットにアクセスするための
s3:PutObject
およびs3:ListBucket
権限を持つロール ARN を入力します。 - AWS アクセスキー: バケットにアクセスするための
s3:PutObject
とs3:ListBucket
の権限を持つアクセスキー ID とアクセスキーシークレットを入力します。
- AWS ロール ARN : バケットにアクセスするための
- タスク名: エクスポート タスクの名前を入力します。デフォルト値は
[エクスポート]をクリックします。
ticloud serverless export create -c <cluster-id> --s3.uri <uri> --s3.access-key-id <access-key-id> --s3.secret-access-key <secret-access-key> --filter "database.table"
s3.uri
:s3://<bucket-name>/<file-path>
形式の Amazon S3 URI。s3.access-key-id
: バケットにアクセスする権限を持つユーザーのアクセスキー ID。s3.secret-access-key
: バケットにアクセスする権限を持つユーザーのアクセスキーシークレット。
Google Cloud Storage にデータをエクスポートする
現在、Google Cloud Storage にデータをエクスポートできるのはTiDB CloudCLIのみです。
ticloud serverless export create -c <cluster-id> --gcs.uri <uri> --gcs.service-account-key <service-account-key> --filter "database.table"
gcs.uri
:gs://<bucket-name>/<file-path>
形式の Google Cloud Storage バケットの URI。gcs.service-account-key
: base64 でエンコードされたサービス アカウント キー。
Azure Blob Storage にデータをエクスポートする
現在、 TiDB CloudCLI使用してのみ Azure Blob Storage にデータをエクスポートできます。
ticloud serverless export create -c <cluster-id> --azblob.uri <uri> --azblob.sas-token <sas-token> --filter "database.table"
azblob.uri
:azure://<account-name>.blob.core.windows.net/<container-name>/<file-path>
形式の Azure Blob Storage の URI。azblob.sas-token
: Azure Blob Storage のアカウント SAS トークン。
エクスポートタスクをキャンセルする
進行中のエクスポート タスクをキャンセルするには、次の手順を実行します。
- Console
- CLI
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
複数のプロジェクトがある場合は、
左下隅にある をクリックして、別のプロジェクトに切り替えます。 ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[インポート]をクリックします。
[インポート]ページで[エクスポート]をクリックして、エクスポート タスク リストを表示します。
キャンセルするエクスポート タスクを選択し、 [アクション]をクリックします。
ドロップダウン リストで[キャンセル] を選択します。実行中ステータスのエクスポート タスクのみをキャンセルできることに注意してください。
ticloud serverless export cancel -c <cluster-id> -e <export-id>
価格
ベータ期間中、エクスポート サービスは無料です。成功したタスクまたはキャンセルされたタスクのエクスポート プロセス中に生成されたリクエストユニット (RU)に対してのみお支払いいただく必要があります。失敗したエクスポート タスクについては、料金は発生しません。