使用 BendSave 备份与恢复数据
本教程将演示如何使用 BendSave 备份与恢复数据。我们会以本地 MinIO 作为 Databend 的 S3 兼容存储以及备份目标。
开始之前
请准备:
- 一台 Linux 机器(x86_64 或 aarch64):本教程在 Linux 上部署 Databend,可使用本地、虚拟机或云服务器(如 AWS EC2)。
- 本地安装 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
- 在 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
- 配置凭证并通过 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
- 下载并解压最新 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
- 编辑 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
- 启动 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
- 使用 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');
- 在 Linux 主机上检查 Databend Bucket,确认已有数据:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://databend/ --recursive
步骤 3:使用 BendSave 备份
- 运行 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/®ion=us-east-1'
- 列出
backupbucket,确认备份文件:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://backupbucket/ --recursive
步骤 4:使用 BendSave 恢复
- 清空
databendBucket:
aws --endpoint-url http://127.0.0.1:9000 s3 rm s3://databend/ --recursive
-
再次在 BendSQL 中查询
books,会因为文件缺失而失败。 -
执行恢复命令:
./databend-bendsave restore \
--from "s3://backupbucket?endpoint=http://127.0.0.1:9000/®ion=us-east-1" \
--to-query ../configs/databend-query.toml \
--to-meta ../configs/databend-meta.toml \
--confirm
- 列出
databendBucket,确认文件已恢复:
aws --endpoint-url http://127.0.0.1:9000 s3 ls s3://databend/ --recursive
- 在 BendSQL 中再次查询
books,即可看到记录:
SELECT * FROM books;
┌────────────────────────────────────────────────────────┐
│ id │ title │ genre │
├──────────────────┼──────────────────┼──────────────────┤
│ 1 │ Invisible Stars │ General │
└────────────────────────────────────────────────────────┘

