doris数据备份(minio S3存储)

一、创建远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE REPOSITORY `仓库名(自己命名)`
WITH S3
# 桶名称要与Minio的桶名称一致
ON LOCATION "s3://桶名称"
PROPERTIES
(
# s3服务路径 此处要注意,不能放ip地址,可以修改hosts做一下映射
"AWS_ENDPOINT" = "http://localhost:9000",
# s3服务ACCESS_KEY
"AWS_ACCESS_KEY" = "*******",
# s3服务SECRET_KEY
"AWS_SECRET_KEY"="*******",
# s3服务区域
"AWS_REGION" = "区域",
# minio默认情况下只允许path style访问方式,所以在访问minio时要加上use_path_style=true
"use_path_style" = "true"
);
  • ON LOCATION 这里后面跟的是 Bucket Name

二、备份操作

2.1 备份操作

1
2
3
4
5
6
7
8
9
10
BACKUP SNAPSHOT [数据库名].{快照名}
TO `仓库名`
[ON|EXCLUDE(排除)] (
`表名` [PARTITION (`分区名1`, ...)],
...
)
PROPERTIES (
"type" = "full", # 备份类型 全量备份(增量暂时不支持)
"timeout" = "3600" # 超时时间 默认为一天
);
  1. 同一个数据库下只能进行一个备份操作。
  2. 节点数量越多,上传的效率越高。备份操作的效率取决于数据量、Compute Node 节点数量以及文件数量。如果分片非常多,或者分片内的小文件较多,都可能增加备份操作的时间。

2.2 查看最近 backup 作业的执行情况

1
show BACKUP;

2.3 查看远端仓库中已存在的备份

1
SHOW SNAPSHOT ON 仓库名 WHERE SNAPSHOT = "快照名";

三、恢复操作

3.1 恢复操作

1
2
3
4
5
6
7
8
9
10
11
12
RESTORE SNAPSHOT [数据库名].{快照名}
FROM `仓库名`
[ON|EXCLUDE(排除)] (
`表名` [PARTITION (`分区名1`, ...)] [AS `表别名`],
...
)
PROPERTIES (
# 时间戳(从2.3章节中查询出的时间戳)
"backup_timestamp"="2018-05-04-16-45-08",
# 副本数
"replication_num" = "1"
);
  1. 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
  2. 可以通过 AS 语句将仓库中备份的表名恢复为新的表。但新表名不能已存在于数据库中。
  3. 当指定恢复表的部分分区时,系统会检查分区范围是否能够匹配。
  4. 在集群规模相同的情况下,恢复操作的耗时基本等同于备份操作的耗时。
  5. 加速恢复操作,可以先通过设置 replication_num 参数,仅恢复一个副本,之后在通过调整副本数 ALTER TABLE PROPERTY,将副本补齐。
  6. PROPERTIES的参数
    1. “backup_timestamp” 指定了恢复对应备份的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT ON repo; 语句获得。
    2. “replication_num” 指定恢复的表或分区的副本数。默认为3
    3. “reserve_replica**”默认为 false。当该属性为 true 时,会忽略 replication_num 属性**,恢复的表或分区的副本数将与备份之前一样。支持多个表或表内多个分区有不同的副本数。
    4. “reserve_dynamic_partition_enable” 默认为 false。当该属性为 true 时,恢复的表会保留该表备份之前的’dynamic_partition_enable’属性值。该值不为true时,则恢复出来的表的’dynamic_partition_enable’属性值会设置为false。
    5. “timeout”:任务超时时间,默认为一天单位秒
    6. “meta_version” = 40:使用指定的 meta_version 来读取之前备份的元数据。注意,该参数作为临时方案,仅用于恢复老版本 Doris 备份的数据最新版本的备份数据中已经包含 meta version,无需再指定。

3.2 查看 restore 作业的执行情况

1
SHOW RESTORE;