📣

TiDB Cloud Serverless 现已更名为
Starter
!此页面由 AI 自动翻译,英文原文请见
此处。

从 TiDB Cloud Serverless 导出数据

TiDB Cloud Serverless 导出(Beta)是一项服务,支持你将数据从 TiDB Cloud Serverless 集群导出到本地文件或外部存储服务。你可以将导出的数据用于备份、迁移、数据分析或其他用途。

虽然你也可以使用 mysqldump 和 TiDB Dumpling 等工具导出数据,但 TiDB Cloud Serverless 导出为你提供了更便捷、高效的导出方式。其优势包括:

  • 便捷性:导出服务提供了简单易用的方式,无需额外工具或资源即可从 TiDB Cloud Serverless 集群导出数据。
  • 隔离性:导出服务使用独立的计算资源,确保与线上服务资源隔离。
  • 一致性:导出服务保证导出数据的一致性且不会加锁,不影响你的线上服务。

导出位置

你可以将数据导出到以下位置:

本地文件

要将数据从 TiDB Cloud Serverless 集群导出到本地文件,你需要 通过 TiDB Cloud 控制台导出数据通过 TiDB Cloud CLI 导出数据,然后使用 TiDB Cloud CLI 下载导出的数据。

导出到本地文件有以下限制:

  • 不支持通过 TiDB Cloud 控制台下载导出数据。
  • 导出数据会保存在 TiDB Cloud 的暂存区,且将在两天后过期。你需要及时下载导出数据。
  • 如果暂存区存储空间已满,将无法导出数据到本地文件。

Amazon S3

导出数据到 Amazon S3 时,你需要提供以下信息:

  • URI:s3://<bucket-name>/<folder-path>/
  • 以下任一访问凭证:
    • 访问密钥:确保该访问密钥拥有 s3:PutObjects3:ListBucket 权限。
    • 角色 ARN:确保该角色 ARN(Amazon Resource Name)拥有 s3:PutObjects3:ListBucket 权限。注意,仅托管在 AWS 上的集群支持角色 ARN。

更多信息,参见 配置 Amazon S3 访问

Google Cloud Storage

导出数据到 Google Cloud Storage 时,你需要提供以下信息:

  • URI:gs://<bucket-name>/<folder-path>/
  • 访问凭证:你的 bucket 的 base64 编码 服务账号密钥。确保该服务账号密钥拥有 storage.objects.create 权限。

更多信息,参见 配置 GCS 访问

Azure Blob Storage

导出数据到 Azure Blob Storage 时,你需要提供以下信息:

  • URI:azure://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/https://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/
  • 访问凭证:你的 Azure Blob Storage 容器的 共享访问签名(SAS)令牌。确保该 SAS 令牌对 ContainerObject 资源拥有 ReadWrite 权限。

更多信息,参见 配置 Azure Blob Storage 访问

阿里云 OSS

导出数据到阿里云 OSS 时,你需要提供以下信息:

  • URI:oss://<bucket-name>/<folder-path>/
  • 访问凭证:你的阿里云账号的 AccessKey 对。确保该 AccessKey 对拥有 oss:PutObjectoss:ListBucketsoss:GetBucketInfo 权限,以允许数据导出到 OSS bucket。

更多信息,参见 配置阿里云对象存储 OSS 访问

导出选项

数据过滤

  • TiDB Cloud 控制台支持按所选数据库和数据表导出数据。
  • TiDB Cloud CLI 支持通过 SQL 语句和 表过滤器 导出数据。

数据格式

你可以将数据导出为以下格式:

  • SQL:以 SQL 格式导出数据。
  • CSV:以 CSV 格式导出数据。你可以指定以下选项:
    • delimiter:指定导出数据中使用的定界符。默认定界符为 "
    • separator:指定导出数据中用于分隔字段的字符。默认分隔符为 ,
    • header:指定是否在导出数据中包含表头行。默认值为 true
    • null-value:指定导出数据中表示 NULL 值的字符串。默认值为 \N
  • Parquet:以 Parquet 格式导出数据。

导出的 schema 和数据文件命名规则如下:

项目未压缩文件名压缩后文件名
数据库 schema{database}-schema-create.sql{database}-schema-create.sql.{compression-type}
表 schema{database}.{table}-schema.sql{database}.{table}-schema.sql.{compression-type}
数据{database}.{table}.{0001}.{csv|parquet|sql}{database}.{table}.{0001}.{csv|sql}.{compression-type}
{database}.{table}.{0001}.{compression-type}.parquet

数据压缩

你可以使用以下算法压缩导出的 CSV 和 SQL 数据:

  • gzip(默认):使用 gzip 压缩导出数据。
  • snappy:使用 snappy 压缩导出数据。
  • zstd:使用 zstd 压缩导出数据。
  • none:不压缩导出数据。

你可以使用以下算法压缩导出的 Parquet 数据:

  • zstd(默认):使用 zstd 压缩 Parquet 文件。
  • gzip:使用 gzip 压缩 Parquet 文件。
  • snappy:使用 snappy 压缩 Parquet 文件。
  • none:不压缩 Parquet 文件。

数据类型转换

当导出数据为 Parquet 格式时,TiDB Cloud Serverless 与 Parquet 之间的数据类型转换如下:

TiDB Cloud Serverless 类型Parquet 原始类型Parquet 逻辑类型
VARCHARBYTE_ARRAYString(UTF8)
TIMEBYTE_ARRAYString(UTF8)
TINYTEXTBYTE_ARRAYString(UTF8)
MEDIUMTEXTBYTE_ARRAYString(UTF8)
TEXTBYTE_ARRAYString(UTF8)
LONGTEXTBYTE_ARRAYString(UTF8)
SETBYTE_ARRAYString(UTF8)
JSONBYTE_ARRAYString(UTF8)
DATEBYTE_ARRAYString(UTF8)
CHARBYTE_ARRAYString(UTF8)
VECTORBYTE_ARRAYString(UTF8)
DECIMAL(1<=p<=9)INT32DECIMAL(p,s)
DECIMAL(10<=p<=18)INT64DECIMAL(p,s)
DECIMAL(p>=19)BYTE_ARRAYString(UTF8)
ENUMBYTE_ARRAYString(UTF8)
TIMESTAMPINT64TIMESTAMP(unit=MICROS,isAdjustedToUTC=false)
DATETIMEINT64TIMESTAMP(unit=MICROS,isAdjustedToUTC=false)
YEARINT32/
TINYINTINT32/
UNSIGNED TINYINTINT32/
SMALLINTINT32/
UNSIGNED SMALLINTINT32/
MEDIUMINTINT32/
UNSIGNED MEDIUMINTINT32/
INTINT32/
UNSIGNED INTFIXED_LEN_BYTE_ARRAY(9)DECIMAL(20,0)
BIGINTFIXED_LEN_BYTE_ARRAY(9)DECIMAL(20,0)
UNSIGNED BIGINTBYTE_ARRAYString(UTF8)
FLOATFLOAT/
DOUBLEDOUBLE/
BLOBBYTE_ARRAY/
TINYBLOBBYTE_ARRAY/
MEDIUMBLOBBYTE_ARRAY/
LONGBLOBBYTE_ARRAY/
BINARYBYTE_ARRAY/
VARBINARYBYTE_ARRAY/
BITBYTE_ARRAY/

示例

导出数据到本地文件

    1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

      提示:

      你可以使用左上角的下拉框切换组织、项目和集群。

    2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

    3. Import 页面,点击右上角的 Export Data to,在下拉列表中选择 Local File,并填写以下参数:

      • Task Name:输入导出任务名称。默认值为 SNAPSHOT_{snapshot_time}
      • Exported Data:选择你要导出的数据库和数据表。
      • Data Format:选择 SQLCSVParquet
      • Compression:选择 GzipSnappyZstdNone

      提示:

      如果你的集群之前未导入或导出过数据,需要在页面底部点击 Click here to export data to... 进行导出。

    4. 点击 Export

    5. 导出任务成功后,你可以复制导出任务详情中显示的下载命令,并在 TiDB Cloud CLI 中运行该命令下载导出数据。

    1. 创建导出任务:

      ticloud serverless export create -c <cluster-id>

      你将在输出中获得一个导出 ID。

    2. 导出任务成功后,将导出数据下载到本地文件:

      ticloud serverless export download -c <cluster-id> -e <export-id>

      有关下载命令的更多信息,参见 ticloud serverless export download

    导出数据到 Amazon S3

      1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

        提示:

        你可以使用左上角的下拉框切换组织、项目和集群。

      2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

      3. Import 页面,点击右上角的 Export Data to,在下拉列表中选择 Amazon S3,并填写以下参数:

        • Task Name:输入导出任务名称。默认值为 SNAPSHOT_{snapshot_time}
        • Exported Data:选择你要导出的数据库和数据表。
        • Data Format:选择 SQLCSVParquet
        • Compression:选择 GzipSnappyZstdNone
        • Folder URI:输入 Amazon S3 的 URI,格式为 s3://<bucket-name>/<folder-path>/
        • Bucket Access:选择以下任一访问凭证并填写凭证信息:
          • AWS Role ARN:输入有权限访问 bucket 的角色 ARN。推荐使用 AWS CloudFormation 创建角色 ARN。更多信息参见 为 TiDB Cloud Serverless 配置外部存储访问
          • AWS Access Key:输入有权限访问 bucket 的 access key ID 和 access key secret。
      4. 点击 Export

      ticloud serverless export create -c <cluster-id> --target-type S3 --s3.uri <uri> --s3.access-key-id <access-key-id> --s3.secret-access-key <secret-access-key> --filter "database.table" ticloud serverless export create -c <cluster-id> --target-type S3 --s3.uri <uri> --s3.role-arn <role-arn> --filter "database.table"
      • s3.uri:Amazon S3 的 URI,格式为 s3://<bucket-name>/<folder-path>/
      • s3.access-key-id:有权限访问 bucket 的用户的 access key ID。
      • s3.secret-access-key:有权限访问 bucket 的用户的 access key secret。
      • s3.role-arn:有权限访问 bucket 的角色 ARN。

      导出数据到 Google Cloud Storage

        1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

          提示:

          你可以使用左上角的下拉框切换组织、项目和集群。

        2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

        3. Import 页面,点击右上角的 Export Data to,在下拉列表中选择 Google Cloud Storage,并填写以下参数:

          • Task Name:输入导出任务名称。默认值为 SNAPSHOT_{snapshot_time}
          • Exported Data:选择你要导出的数据库和数据表。
          • Data Format:选择 SQLCSVParquet
          • Compression:选择 GzipSnappyZstdNone
          • Folder URI:输入 Google Cloud Storage 的 URI,格式为 gs://<bucket-name>/<folder-path>/
          • Bucket Access:上传有权限访问 bucket 的 Google Cloud 凭证文件。
        4. 点击 Export

        ticloud serverless export create -c <cluster-id> --target-type GCS --gcs.uri <uri> --gcs.service-account-key <service-account-key> --filter "database.table"
        • gcs.uri:Google Cloud Storage bucket 的 URI,格式为 gs://<bucket-name>/<folder-path>/
        • gcs.service-account-key:base64 编码的服务账号密钥。

        导出数据到 Azure Blob Storage

          1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

            提示:

            你可以使用左上角的下拉框切换组织、项目和集群。

          2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

          3. Import 页面,点击右上角的 Export Data to,在下拉列表中选择 Azure Blob Storage,并填写以下参数:

            • Task Name:输入导出任务名称。默认值为 SNAPSHOT_{snapshot_time}
            • Exported Data:选择你要导出的数据库和数据表。
            • Data Format:选择 SQLCSVParquet
            • Compression:选择 GzipSnappyZstdNone
            • Folder URI:输入 Azure Blob Storage 的 URI,格式为 azure://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/
            • SAS Token:输入有权限访问容器的 SAS token。推荐使用 Azure ARM 模板 创建 SAS token。更多信息参见 为 TiDB Cloud Serverless 配置外部存储访问
          4. 点击 Export

          ticloud serverless export create -c <cluster-id> --target-type AZURE_BLOB --azblob.uri <uri> --azblob.sas-token <sas-token> --filter "database.table"
          • azblob.uri:Azure Blob Storage 的 URI,格式为 (azure|https)://<account-name>.blob.core.windows.net/<container-name>/<folder-path>/
          • azblob.sas-token:Azure Blob Storage 的账户 SAS token。

          导出数据到阿里云 OSS

            1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

              提示:

              你可以使用左上角的下拉框切换组织、项目和集群。

            2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

            3. Import 页面,点击右上角的 Export Data to,在下拉列表中选择 Alibaba Cloud OSS

            4. 填写以下参数:

              • Task Name:输入导出任务名称。默认值为 SNAPSHOT_{snapshot_time}
              • Exported Data:选择你要导出的数据库和数据表。
              • Data Format:选择 SQLCSVParquet
              • Compression:选择 GzipSnappyZstdNone
              • Folder URI:输入你要导出数据的阿里云 OSS URI,格式为 oss://<bucket-name>/<folder-path>/
              • AccessKey IDAccessKey Secret:输入有权限访问 bucket 的 AccessKey ID 和 AccessKey Secret。
            5. 点击 Export

            ticloud serverless export create -c <cluster-id> --target-type OSS --oss.uri <uri> --oss.access-key-id <access-key-id> --oss.access-key-secret <access-key-secret> --filter "database.table"
            • oss.uri:你要导出数据的阿里云 OSS URI,格式为 oss://<bucket-name>/<folder-path>/
            • oss.access-key-id:有权限访问 bucket 的用户的 AccessKey ID。
            • oss.access-key-secret:有权限访问 bucket 的用户的 AccessKey Secret。

            取消导出任务

            要取消正在进行的导出任务,请按以下步骤操作:

              1. 登录 TiDB Cloud 控制台,进入你项目的 Clusters 页面。

                提示:

                你可以使用左上角的下拉框切换组织、项目和集群。

              2. 点击目标集群名称进入概览页,然后点击左侧导航栏的 Data > Import

              3. Import 页面,点击 Export 查看导出任务列表。

              4. 选择你要取消的导出任务,然后点击 Action

              5. 在下拉列表中选择 Cancel。注意,你只能取消状态为 Running 的导出任务。

              ticloud serverless export cancel -c <cluster-id> -e <export-id>

              导出速度

              导出速度取决于你的 集群套餐。详情见下表:

              套餐类型导出速度
              免费集群套餐最高 25 MiB/s
              可扩展集群套餐最高 100 MiB/s

              计费

              导出服务在 Beta 期间免费。你只需为导出过程中(无论任务成功或取消)产生的 Request Units (RUs) 支付费用。对于失败的导出任务,不会收取费用。

              文档内容是否有帮助?