BACKUP

Name

BACKUP

Description

该语句用于备份指定数据库下的数据。该命令为异步操作。

仅 root 或 superuser 用户可以创建仓库。

提交成功后,需通过 SHOW BACKUP 命令查看进度。仅支持备份 OLAP 类型的表。

语法:

  1. BACKUP SNAPSHOT [db_name].{snapshot_name}
  2. TO `repository_name`
  3. [ON|EXCLUDE] (
  4. `table_name` [PARTITION (`p1`, ...)],
  5. ...
  6. )
  7. PROPERTIES ("key"="value", ...);

说明:

  • 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
  • ON 子句中标识需要备份的表和分区。如果不指定分区,则默认备份该表的所有分区
  • EXCLUDE 子句中标识不需要备份的表和分区。备份除了指定的表或分区之外这个数据库中所有表的所有分区数据。
  • PROPERTIES 目前支持以下属性:
    • “type” = “full”:表示这是一次全量更新(默认)
    • “timeout” = “3600”:任务超时时间,默认为一天。单位秒。

Example

  1. 全量备份 example_db 下的表 example_tbl 到仓库 example_repo 中:
  1. BACKUP SNAPSHOT example_db.snapshot_label1
  2. TO example_repo
  3. ON (example_tbl)
  4. PROPERTIES ("type" = "full");
  1. 全量备份 example_db 下,表 example_tbl 的 p1, p2 分区,以及表 example_tbl2 到仓库 example_repo 中:
  1. BACKUP SNAPSHOT example_db.snapshot_label2
  2. TO example_repo
  3. ON
  4. (
  5. example_tbl PARTITION (p1,p2),
  6. example_tbl2
  7. );
  1. 全量备份 example_db 下除了表 example_tbl 的其他所有表到仓库 example_repo 中:
  1. BACKUP SNAPSHOT example_db.snapshot_label3
  2. TO example_repo
  3. EXCLUDE (example_tbl);
  1. 创建名为 hdfs_repo 的仓库,依赖 Baidu hdfs broker “hdfs_broker”,数据根目录为:hdfs://hadoop-name-node:54310/path/to/repo/
  1. CREATE REPOSITORY `hdfs_repo`
  2. WITH BROKER `hdfs_broker`
  3. ON LOCATION "hdfs://hadoop-name-node:54310/path/to/repo/"
  4. PROPERTIES
  5. (
  6. "username" = "user",
  7. "password" = "password"
  8. );
  1. 创建名为 s3_repo 的仓库,直接链接云存储,而不通过broker.
  1. CREATE REPOSITORY `s3_repo`
  2. WITH S3
  3. ON LOCATION "s3://s3-repo"
  4. PROPERTIES
  5. (
  6. "AWS_ENDPOINT" = "http://s3-REGION.amazonaws.com",
  7. "AWS_ACCESS_KEY" = "AWS_ACCESS_KEY",
  8. "AWS_SECRET_KEY"="AWS_SECRET_KEY",
  9. "AWS_REGION" = "REGION"
  10. );
  1. 创建名为 hdfs_repo 的仓库,直接链接HDFS,而不通过broker.
  1. CREATE REPOSITORY `hdfs_repo`
  2. WITH hdfs
  3. ON LOCATION "hdfs://hadoop-name-node:54310/path/to/repo/"
  4. PROPERTIES
  5. (
  6. "fs.defaultFS"="hdfs://hadoop-name-node:54310",
  7. "hadoop.username"="user"
  8. );
  1. 创建名为 minio_repo 的仓库,直接通过 s3 协议链接 minio.
  1. CREATE REPOSITORY `minio_repo`
  2. WITH S3
  3. ON LOCATION "s3://minio_repo"
  4. PROPERTIES
  5. (
  6. "AWS_ENDPOINT" = "http://minio.com",
  7. "AWS_ACCESS_KEY" = "MINIO_USER",
  8. "AWS_SECRET_KEY"="MINIO_PASSWORD",
  9. "AWS_REGION" = "REGION",
  10. "use_path_style" = "true"
  11. );

Keywords

  1. BACKUP

Best Practice

  1. 同一个数据库下只能进行一个备份操作。

  2. 备份操作会备份指定表或分区的基础表及 物化视图,并且仅备份一副本。

  3. 备份操作的效率

    备份操作的效率取决于数据量、Compute Node 节点数量以及文件数量。备份数据分片所在的每个 Compute Node 都会参与备份操作的上传阶段。节点数量越多,上传的效率越高。

    文件数据量只涉及到的分片数,以及每个分片中文件的数量。如果分片非常多,或者分片内的小文件较多,都可能增加备份操作的时间。