doris:备份

第 1 步。创建 Repository

根据您的存储选择适当的语句来创建 Repository。有关详细用法,请参阅创建 Repository。在不同集群使用相同路径的 Repository 进行备份时,请确保使用不同的 Label,以避免冲突造成数据错乱。

方法 1: 在 S3 上创建 Repository

要在 S3 存储上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `s3_repo`
WITH S3
ON LOCATION "s3://bucket_name/s3_repo"
PROPERTIES
(
    "s3.endpoint" = "s3.us-east-1.amazonaws.com",
    "s3.region" = "us-east-1",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk"
);
  • 将 bucket_name 替换为您的 S3 存储桶名称。
  • 提供适当的 endpoint、access key、secret key 和 region 以进行 S3 设置。

方法 2: 在 Azure 上创建 Repository

自 Doris 3.0.4 开始支持

要在 Azure 存储上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `azure_repo`
WITH S3
ON LOCATION "s3://bucket_name/azure_repo"
PROPERTIES
(
    "s3.endpoint" = "selectdbcloudtestwestus3.blob.core.windows.net",
    "s3.region" = "dummy_region",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk",
    "provider" = "AZURE"
);
  • 将 bucket_name 替换为您的 Azure 容器名称。
  • 提供您的 Azure 存储帐户和密钥以进行身份验证。
  • s3.region 只是一个虚假的 region,任意指定一个即可,但是必须要指定。
  • provider 必须为 AZURE

方法 3: 在 GCP 上创建 Repository

要在 Google Cloud Platform (GCP) 存储上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `gcp_repo`
WITH S3
ON LOCATION "s3://bucket_name/backup/gcp_repo"
PROPERTIES
(
    "s3.endpoint" = "storage.googleapis.com",
    "s3.region" = "US-WEST2",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk"
);
  • 将 bucket_name 替换为您的 GCP 存储桶名称。
  • 提供您的 GCP endpoint、access key 和 secret key。
  • s3.region 只是一个虚假的 region,任意指定一个即可,但是必须要指定。

方法 4: 在 OSS(阿里云对象存储服务)上创建 Repository

要在 OSS 上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `oss_repo`
WITH S3
ON LOCATION "s3://bucket_name/oss_repo"
PROPERTIES
(
    "s3.endpoint" = "oss.aliyuncs.com",
    "s3.region" = "cn-hangzhou",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk"
);
  • 将 bucket_name 替换为您的 OSS 存储桶名称。
  • 提供您的 OSS endpoint、region、access key 和 secret key。

方法 5: 在 MinIO 上创建 Repository

要在 MinIO 存储上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `minio_repo`
WITH S3
ON LOCATION "s3://bucket_name/minio_repo"
PROPERTIES
(
    "s3.endpoint" = "yourminio.com",
    "s3.region" = "dummy-region",
    "s3.access_key" = "ak",
    "s3.secret_key" = "sk",
    "use_path_style" = "true"
);
  • 将 bucket_name 替换为您的 MinIO 存储桶名称。
  • 提供您的 MinIO endpoint、access key 和 secret key。
  • s3.region 只是一个虚假的 region,任意指定一个即可,但是必须要指定。
  • 如果您不启用 Virtual Host-style,则 'use_path_style' 必须为 true。

方法 6: 在 HDFS 上创建 Repository

要在 HDFS 存储上创建 Repository,请使用以下 SQL 命令:

复制代码
CREATE REPOSITORY `hdfs_repo`
WITH hdfs
ON LOCATION "/prefix_path/hdfs_repo"
PROPERTIES
(
    "fs.defaultFS" = "hdfs://127.0.0.1:9000",
    "hadoop.username" = "doris-test"
)
  • 将 prefix_path 替换为真实路径。
  • 提供您的 hdfs endpoint 和用户名。

第 2 步。备份

请参考以下语句以备份数据库、表或分区。有关详细用法,请参阅备份

建议使用有意义的 Label 名称,例如包含备份中包含的数据库和表。

方法 1: 备份当前数据库

以下 SQL 语句将当前数据库备份到名为 example_repo 的 Repository,并使用快照 Label exampledb_20241225

复制代码
BACKUP SNAPSHOT exampledb_20241225
TO example_repo;

方法 2: 备份指定数据库

以下 SQL 语句将名为 destdb 的数据库备份到名为 example_repo 的 Repository,并使用快照 Label destdb_20241225

复制代码
BACKUP SNAPSHOT destdb.`destdb_20241225`
TO example_repo;

方法 3: 备份指定表

以下 SQL 语句将两个表备份到名为 example_repo 的 Repository,并使用快照 Label exampledb_tbl_tbl1_20241225

复制代码
BACKUP SNAPSHOT exampledb_tbl_tbl1_20241225
TO example_repo
ON (example_tbl, example_tbl1);

方法 4: 备份指定分区

以下 SQL 语句将名为 example_tbl2 的表和名为 p1p2 的两个分区备份到名为 example_repo 的 Repository,并使用快照 Label example_tbl_p1_p2_tbl1_20241225

复制代码
BACKUP SNAPSHOT example_tbl_p1_p2_tbl1_20241225
TO example_repo
ON
(
      example_tbl PARTITION (p1,p2),
      example_tbl2
);

方法 5: 备份当前数据库,排除某些表

以下 SQL 语句将当前数据库备份到名为 example_repo 的 Repository,并使用快照 Label exampledb_20241225,排除两个名为 example_tblexample_tbl1 的表。

复制代码
BACKUP SNAPSHOT exampledb_20241225
TO example_repo
EXCLUDE
(
      example_tbl,
      example_tbl1
);

第 3 步。查看最近备份作业的执行情况

以下 SQL 语句可用于查看最近备份作业的执行情况。

复制代码
mysql> show BACKUP\G;
*************************** 1. row ***************************
                  JobId: 17891847
           SnapshotName: exampledb_20241225
                 DbName: example_db
                  State: FINISHED
             BackupObjs: [example_db.example_tbl]
             CreateTime: 2022-04-08 15:52:29
   SnapshotFinishedTime: 2022-04-08 15:52:32
     UploadFinishedTime: 2022-04-08 15:52:38
           FinishedTime: 2022-04-08 15:52:44
        UnfinishedTasks:
               Progress:
             TaskErrMsg:
                 Status: [OK]
                Timeout: 86400
   1 row in set (0.01 sec)

第 4 步。查看 Repository 中的现有备份

以下 SQL 语句可用于查看名为 example_repo 的 Repository 中的现有备份,其中 Snapshot 列是快照 Label,Timestamp 是时间戳。

复制代码
mysql> SHOW SNAPSHOT ON example_repo;
+-----------------+---------------------+--------+
| Snapshot        | Timestamp           | Status |
+-----------------+---------------------+--------+
| exampledb_20241225 | 2022-04-08-15-52-29 | OK     |
+-----------------+---------------------+--------+
1 row in set (0.15 sec)
相关推荐
鹏码纵横1 小时前
已解决:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 异常的正确解决方法,亲测有效!!!
java·python·mysql
仙人掌_lz1 小时前
Qwen-3 微调实战:用 Python 和 Unsloth 打造专属 AI 模型
人工智能·python·ai·lora·llm·微调·qwen3
weixin_985432111 小时前
Spring Boot 中的 @ConditionalOnBean 注解详解
java·spring boot·后端
猎人everest2 小时前
快速搭建运行Django第一个应用—投票
后端·python·django
猎人everest2 小时前
Django的HelloWorld程序
开发语言·python·django
chusheng18403 小时前
2025最新版!Windows Python3 超详细安装图文教程(支持 Python3 全版本)
windows·python·python3下载·python 安装教程·python3 安装教程
别勉.3 小时前
Python Day50
开发语言·python
xiaohanbao093 小时前
day54 python对抗生成网络
网络·python·深度学习·学习
爬虫程序猿3 小时前
利用 Python 爬虫按关键字搜索 1688 商品
开发语言·爬虫·python
英杰.王4 小时前
深入 Java 泛型:基础应用与实战技巧
java·windows·python