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)
相关推荐
niuniu_66634 分钟前
selenium应用测试场景
python·selenium·测试工具·单元测试·测试
满怀10152 小时前
Python扩展知识详解:lambda函数
开发语言·python
佚名涙3 小时前
go中锁的入门到进阶使用
开发语言·后端·golang
蓝博AI4 小时前
基于卷积神经网络的眼疾识别系统,resnet50,efficentnet(pytorch框架,python代码)
pytorch·python·cnn
牧歌悠悠5 小时前
【Python 算法】动态规划
python·算法·动态规划
Doris Liu.7 小时前
如何检测代码注入(Part 2)
windows·python·安全·网络安全·网络攻击模型
逢生博客7 小时前
阿里 FunASR 开源中文语音识别大模型应用示例(准确率比faster-whisper高)
人工智能·python·语音识别·funasr
噔噔噔噔@7 小时前
软件测试对于整个行业的重要性及必要性
python·单元测试·压力测试
赵谨言8 小时前
基于Python的Django框架的个人博客管理系统
经验分享·python·毕业设计
草捏子8 小时前
从CPU原理看:为什么你的代码会让CPU"原地爆炸"?
后端·cpu