---
title: 基于 minio 部署单实例 Databend | 新手篇（1）
description: 基于 minio 部署单实例 Databend | 新手篇（1）
slug: category-engineering/deploy-databend-on-minio
date: 2022-12-26
tags: [新手篇]
category: Engineering
cover_url: beginner-01.png
image: beginner-01.png
authors:
  - wubx
---

Databend 是一个使用 Rust 研发、开源、完全面向云架构的新式数仓，提供极速的弹性扩展能力，致力于打造按需、按量的 Data Cloud 产品体验。具备以下特点：

{/* truncate */}

- 开源 Cloud Data Warehouse 明星项目

- Vectorized Execution 和 Pull&Push-Based Processor Model

- 真正的存储、计算分离架构，高性能、低成本，按需按量使用

- 完整的数据库支持，兼容 MySQL，Clickhouse 协议

- 完善的事务性，支持 Time Travel, Database Clone，Data Share 等功能

- 支持基于同一份数据的多租户读写、共享操作

开源地址：https://github.com/databendlabs/databend/

官方文档：https://docs.databend.cn

## 理解 Databend 架构

![](../static/img/blog/beginner-01-1.png)

Databend 是一个开源的云原生数仓，为了更好的适用于云环境，Databend 从架构上分为三层：

MetaService 层，Query 层，存储层。下面分别简介：

- MetaService 层

这是 Databend 司令部，用于存储：权限定义，表结构定义，事务管理，表和数据的关联关联以及数据共享的整体逻辑。推荐集群方式部署。

- Query 层

Query 层是 Databend 中直接和用户交互及调用存储的一层。用户通过 SQL 和 Databend 交互，Query 层接到用户的请求后读写存储层。该层不用实时在线，使用时拉起，同时也支持动态扩容及收缩。

- 存储层

Databend 的存储层推荐使用云上的对象存储或是自建对象存储。Databend 在存储引擎这块使用了大数据生态的：Parquet 格式，同时引入了：min/max 索引，稀疏索引，bloom 索引等。

### Databend 支持的部署环境

| 部署环境      | Databend |
| ------------- | -------- |
| 是否开源      | 是       |
| AWS S3        | 支持部署 |
| Google GCS    | 支持部署 |
| Azure Blob    | 支持部署 |
| 阿里云 COS    | 支持部署 |
| 腾讯 OSS      | 支持部署 |
| 华为云 OBS    | 支持部署 |
| minio         | 支持部署 |
| Ceph          | 支持部署 |
| Wasabi        | 支持部署 |
| SeaweedFS     | 支持部署 |
| 青云 QingStor | 支持部署 |

详细参考：https://docs.databend.cn/guides/deploy/deploy/

## Databend 支持部署环境（单机）

> 实质上 minio 环境单机搭建比较容易，但后期的扩容还是比较麻烦，minio + databend 比较适合走一下流程，这个环境也是 Databend 很多同事的开发环境。但 Databend 真正的测试及性能测试都是基于 AWS S3 环境运行。

Databend 部署方式比较简单，这里以 Linux 下 minio + Databend 单机部署部署为例，如果你是在公有云上部署，就更加简单。

| 软件     | 位置           | 监听端口                           |
| -------- | -------------- | ---------------------------------- |
| minio    | /data/minio    | 9900                               |
| databend | /data/databend | mysql: 3307 <br/> http: 8000 <br/> |

### Minio 搭建

官方地址：https://min.io/

从官方下载 minio 并启动

```Bash
cd /data
mkdir minio
cd minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
./minio server ./data./minio server --address :9900 ./data
```

利用 WEB 届面打开 minio 管理测，打开后创建一个：databend bucket.

![](../static/img/blog/beginner-01-2.png)

完成这个 bucket 创建后，minio 部署部分已经完成。

### Databend 下载

Databend 下载建议可以从 Databend 的开源项目的 repo 里下载，每天都会有一个对应的 release , 具体的地址：https://github.com/databendlabs/databend/tags

国内下载可以通过 aws s3 下载：https://docs.databend.cn/download

| 文件类型                                                     | 适用平台               |
| ------------------------------------------------------------ | ---------------------- |
| - databend-version-nightly-aarch64-apple-darwin.tar.gz       | 适用于 m1 的 mac 系统  |
| - databend-version-nightly-aarch64-unknown-linux-musl.tar.gz | 适用于 arm 的 linux    |
| - databend-version-nightly-x86_64-apple-darwin.tar.gz        | 适用于 x64 的 mac 系统 |
| - databend-version-nightly-x86_64-unknown-linux-musl.tar.gz  | 适用于 x64 的 linux    |
| - source code                                                | 对应的源码             |

一般 Linux 下我们下载 musl 包就可以，注意是 arm 或 x86_64 平台的区分。

下载地址：

```Bash
https://docs.databend.cn/download
https://github.com/databendlabs/databend/tags
```

上面两个地址都可以下载 Databend, 其中 GitHUB 上的比较全一点。

这里以 Linux X86_64 安装 v0.9.51-nightly 版本为例：

```Bash
cd /data
mkdir databend
export ver=v1.2.184-nightly
wget https://repo.databend.com/databend/$ver/databend-$ver-x86_64-unknown-linux-musl.tar.gz
cd databend
tar zxvf ../databend-$ver-x86_64-unknown-linux-musl.tar.gz

sudo mkdir /var/log/databend
sudo mkdir /var/lib/databend
sudo chown -R $USER /var/log/databend
sudo chown -R $USER /var/lib/databend
```

![ ](../static/img/blog/beginner-01-3.png)

### Databend 配置

默认下载的配置文件，需要修改 databend-query 的配置就可以使用了。

```Bash
vim configs/databend-query.toml
```

修改部分

```Bash
[[query.users]]
name = "root"
auth_type = "no_password"


# Storage config.[storage]
# fs | s3 | azblob | obs
type = "s3"
allow_insecure = true

# Set a local folder to store your data.
# Comment out this block if you're NOT using local file system as storage.
[storage.fs]
data_path = "./.databend/stateless_test_data"

# To use S3-compatible object storage, uncomment this block and set your values.
[storage.s3]
bucket = "databend"
root ="proj_data"
endpoint_url = "http://127.0.0.1:9900"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"
```

### Databend 启动 & 环境校验

#### 启动 Databend

```Bash
./scripts/start.sh
ps axu |grep databend
```

![](../static/img/blog/beginner-01-4.png)

#### 关闭 Databend

```Bash
./scripts/stop.sh
```

#### 连接 Databend

Databend 默认对外有三个服务端口：

MySQL : 3307 支持 MySQL cli，应用程序连接。

Clickhouse: 8124 Clickhouse http handler 协议

这里我们以 MySQL client 连接举例：

```Bash
mysql -h 127.0.0.1 -P3307 -uroot
```

需要注意 root 可以通过 localhost 实现无密码登录。Databend 权限管理参考了 MySQL 8.0 的设计，可以按 MySQL 8.0 的用户管理来管理 Databend 的用户。

到此 Databend 单机基本部署就完成了。使用上就可以相当于使用一个 MySQL 一样来使用了。

### Databend 官方 Client: bendsql

bendsql 是 Databend 基于 Rust 实现的一个 cli 工具，可以连接私有化环境，也可以连接 Databend Cloud

下载地址：https://github.com/databendlabs/bendsql

安装和使用可以阅读 Readme 获取。

## Connect With Us

Databend 是一款开源、弹性、低成本，基于对象存储也可以做实时分析的新式数仓。期待您的关注，一起探索云原生数仓解决方案，打造新一代开源 Data Cloud。

- [Databend Cloud](https://databend.cn)
- [Databend Website](https://docs.databend.cn)

- [GitHub Discussions](https://github.com/databendlabs/databend/discussions)

- [Twitter](https://twitter.com/Datafuse_Labs)

- [Slack Channel](https://link.databend.com/join-slack)
