跳到主要内容

使用 BendSave 备份与恢复数据

本教程将演示如何使用 BendSave 备份与恢复数据。我们会以本地 MinIO 作为 Databend 的 S3 兼容存储以及备份目标。

开始之前

请准备:

  • 一台 Linux 机器(x86_64 或 aarch64):本教程在 Linux 上部署 Databend,可使用本地、虚拟机或云服务器(如 AWS EC2)。
    • Docker:用于部署本地 MinIO。
    • AWS CLI:用于管理 MinIO 中的 Bucket。
    • 如果在 AWS EC2 上操作,请确保安全组放开 8000 端口,以便 BendSQL 连接 Databend。
  • 本地安装 BendSQL,参见 安装 BendSQL
  • Databend 发布包:从 Databend GitHub Releases 下载。该包的 bin 目录包含本教程所需的 databend-bendsave 二进制:
databend-v1.2.725-nightly-x86_64-unknown-linux-gnu/
├── bin
│ ├── bendsql
│ ├── databend-bendsave # 本教程所用的 BendSave
│ ├── databend-meta
│ ├── databend-metactl
│ └── databend-query
├── configs
│ ├── databend-meta.toml
│ └── databend-query.toml
└── ...

步骤 1:在 Docker 中启动 MinIO

  1. 在 Linux 机器上启动 MinIO 容器,映射 9000(API)与 9001(Web Console)端口:
docker run -d --name minio \
-e "MINIO_ACCESS_KEY=minioadmin" \
-e "MINIO_SECRET_KEY=minioadmin" \
-p 9000:9000 \
-p 9001:9001 \
minio/minio server /data \
--address :9000 \
--console-address :9001
  1. 配置凭证并通过 AWS CLI 创建两个 Bucket:一个用于备份(backupbucket),一个作为 Databend 的存储(databend)。
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin

aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://backupbucket
aws --endpoint-url http://127.0.0.1:9000/ s3 mb s3://databend

步骤 2:部署 Databend

  1. 下载并解压最新 Databend:
wget https://github.com/databendlabs/databend/releases/download/v1.2.25-nightly/databend-dbg-v1.2.725-nightly-x86_64-unknown-linux-gnu.tar.gz

tar -xzvf databend-dbg-v1.2.725-nightly-x86_64-unknown-linux-gnu.tar.gz
  1. 编辑 configs/databend-query.toml
vi configs/databend-query.toml

关键配置如下:

...
[[query.users]]
name = "root"
auth_type = "no_password"
...
[storage]
type = "s3"
...
[storage.s3]
bucket = "databend"
endpoint_url = "http://127.0.0.1:9000"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"
enable_virtual_host_style = false
  1. 启动 Meta 与 Query 服务:
./databend-meta -c ../configs/databend-meta.toml > meta.log 2>&1 &
./databend-query -c ../configs/databend-query.toml > query.log 2>&1 &

通过健康检查确认服务已启动:

curl -I  http://127.0.0.1:28002/v1/health
curl -I http://127.0.0.1:8080/v1/health
  1. 使用 BendSQL 连接 Databend,激活企业 License、创建表并插入示例数据:
bendsql -h <your-linux-host>
SET GLOBAL enterprise_license='<your-license-key>';
CREATE TABLE books (
id BIGINT UNSIGNED,
title VARCHAR,
genre VARCHAR DEFAULT 'General'
);

INSERT INTO books(id, title) VALUES(1, 'Invisible Stars');
  1. 在 Linux 主机上检查 Databend Bucket,确认已有数据:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://databend/ --recursive

步骤 3:使用 BendSave 备份

  1. 运行 BendSave,将 Databend 数据备份至 backupbucket
export AWS_ACCESS_KEY_ID=minioadmin
export AWS_SECRET_ACCESS_KEY=minioadmin

./databend-bendsave backup \
--from ../configs/databend-query.toml \
--to 's3://backupbucket?endpoint=http://127.0.0.1:9000/&region=us-east-1'
  1. 列出 backupbucket,确认备份文件:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://backupbucket/ --recursive

步骤 4:使用 BendSave 恢复

  1. 清空 databend Bucket:
aws --endpoint-url http://127.0.0.1:9000 s3 rm s3://databend/ --recursive
  1. 再次在 BendSQL 中查询 books,会因为文件缺失而失败。

  2. 执行恢复命令:

./databend-bendsave restore \
--from "s3://backupbucket?endpoint=http://127.0.0.1:9000/&region=us-east-1" \
--to-query ../configs/databend-query.toml \
--to-meta ../configs/databend-meta.toml \
--confirm
  1. 列出 databend Bucket,确认文件已恢复:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://databend/ --recursive
  1. 在 BendSQL 中再次查询 books,即可看到记录:
SELECT * FROM books;

┌────────────────────────────────────────────────────────┐
│ id │ title │ genre │
├──────────────────┼──────────────────┼──────────────────┤
1 │ Invisible Stars │ General │
└────────────────────────────────────────────────────────┘
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验