写点什么

使用指南|如何将 GreptimeDB 数据保存在阿里云 OSS

作者:Greptime
  • 2023-10-18
    北京
  • 本文字数:2867 字

    阅读完需:约 9 分钟

使用指南|如何将 GreptimeDB 数据保存在阿里云 OSS

引入

GreptimeDB 从诞生的第一天起就定义为面向云时代基础设施的分布式时序数据库,可以将数据保存在 AWS S3 或者阿里云 OSS 等等这样的廉价对象存储上。


本篇文章将详细介绍如何做到这一点。

第一步:下载 GreptimeDB

首先,你需要下载一个 GreptimeDB 实例,可以根据你的运行平台从 Greptime 资源页面 下载打包好的二进制文件,也可以使用 docker 镜像。


更多安装方式请参考安装文档


本文将以我们提供的安装脚本来演示。首先打开命令行,进入一个临时工作目录,执行下列脚本将会自动下载并安装一个 greptime 实例到本地:


curl -fsSL \  https://raw.githubusercontent.com/greptimeteam/greptimedb/develop/scripts/install.sh | sh
复制代码


这里下载的是 nightly 构建版本,仅用于测试,如果需要生产稳定运行,还请下载正式发布的版本(截止本文编写时间是 v0.4.0)。


如果一切顺利的话,你应该可以看到类似下列的输出:

x greptime-darwin-arm64-v0.4.0-nightly-20231002/x greptime-darwin-arm64-v0.4.0-nightly-20231002/greptimeRun './greptime --help' to get started
复制代码


在当前目录可以看到 greptime 这个二进制文件:

-rwxr-xr-x  1 dennis  staff   134M Oct  2 10:08 greptime
复制代码


执行 ./greptime --help 命令,查看帮助信息:


greptimedbbranch: developcommit: 201acd152db2a961d804b367e23d2224b4397de8dirty: falseversion: 0.4.0-nightly
USAGE: greptime [OPTIONS] <SUBCOMMAND>
OPTIONS: -h, --help Print help information --log-dir <LOG_DIR> --log-level <LOG_LEVEL> -V, --version Print version information
SUBCOMMANDS: cli datanode frontend help Print this message or the help of the given subcommand(s) metasrv standalone
复制代码

第二步 配置 OSS 信息

假设你已经创建了一个阿里云 OSS 的 bucket ,并且已经有对应的 Access Key ID/Secret 等鉴权信息,接下来就进入配置环节。


首先,可以从我们的 GitHub 仓库下载 standalone 单机模式的样例配置文件 standalone.example.toml,假设我们保存为 config.toml


curl https://raw.githubusercontent.com/GreptimeTeam/greptimedb/develop/config/standalone.example.toml > config.toml
复制代码


接下来编辑 config.toml,重点是其中的 [storage] 部分,样例展示如下:


[storage]# The working home directory.data_home = "/tmp/greptimedb/"# Storage type.type = "File"# TTL for all tables. Disabled by default.# global_ttl = "7d"# Cache configuration for object storage such as 'S3' etc.# cache_path = "/path/local_cache"# The local file cache capacity in bytes.# cache_capacity = "256Mib"
复制代码


配置本地磁盘模式,数据库根目录设置为 /tmp/greptimedb/(如果是生产环境,请修改为非临时目录)。


参照配置文档,可以修改成将数据保存在阿里云 OSS 上:


[storage]# The working home directory.data_home = "/tmp/greptimedb/"# Storage type.type = "Oss"bucket = "greptimedb-test"root = "/oss-test"region = "cn-hangzhou"access_key_id = "***********"secret_access_key = "*********************"# endpoint = ""
复制代码


这里有一些关键参数,可以根据你的具体使用替换成你的 OSS bucket 信息:


  • bucket:创建的 bucket 名称;

  • root:数据库数据的存储目录,这里设定为 oss-test,相对于 bucket 的根目录开始;

  • access_key_id: OSS 的访问 Secret Access ID;

  • secret_access_key: OSS 的访问 Secret Access key;

  • 必要的话设置 region 或者 endpoint,我们测试的 bucket 创建在杭州,所以 region 设置为 cn-hangzhouendpoint 设置为 https://oss-cn-hangzhou.aliyuncs.com/`。

第三步 启动并测试

正确配置之后,就可以启动测试了。执行下列命令启动单机版 GreptimeDB:


./greptime standalone start -c config.toml
复制代码


我们通过 -c 选项指定了配置文件。如果正常启动可以在最后看到类似如下的日志:


2023-10-11T07:33:34.832355Z  INFO frontend::server: Starting HTTP_SERVER at 127.0.0.1:40002023-10-11T07:33:34.855511Z  INFO servers::http: Enable dashboard service at '/dashboard'2023-10-11T07:33:34.856408Z  INFO servers::http: HTTP server is bound to 127.0.0.1:40002023-10-11T07:33:34.856742Z  INFO frontend::server: Starting GRPC_SERVER at 127.0.0.1:40012023-10-11T07:33:34.857168Z  INFO servers::grpc: gRPC server is bound to 127.0.0.1:40012023-10-11T07:33:34.859433Z  INFO frontend::server: Starting MYSQL_SERVER at 127.0.0.1:40022023-10-11T07:33:34.859453Z  INFO servers::server: MySQL server started at 127.0.0.1:40022023-10-11T07:33:34.859465Z  INFO frontend::server: Starting OPENTSDB_SERVER at 127.0.0.1:42422023-10-11T07:33:34.859485Z  INFO servers::server: OpenTSDB server started at 127.0.0.1:42422023-10-11T07:33:34.859490Z  INFO frontend::server: Starting POSTGRES_SERVER at 127.0.0.1:40032023-10-11T07:33:34.859500Z  INFO servers::server: Postgres server started at 127.0.0.1:4003
复制代码


GreptimeDB 支持各类协议端口将正常绑定并监听。我们可以通过浏览器地址 http://localhost:4000/dashboard/ 访问 GreptimeDB 自身携带的 Dashboard,如下所示。



也可以在这里执行 SQL/Python/PromQL 等查询语句。


接下来我们尝试创建表,再写入数据并查询。你可以直接在 dashboard 里窗口执行这些 SQL 语句:


CREATE TABLE IF NOT EXISTS system_metrics (    host STRING,    idc STRING,    cpu_util DOUBLE,    memory_util DOUBLE,    disk_util DOUBLE,    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP,    PRIMARY KEY(host, idc),    TIME INDEX(ts));
INSERT INTO system_metricsVALUES ("host1", "idc_a", 11.8, 10.3, 10.3, 1667446797450), ("host1", "idc_a", 80.1, 70.3, 90.0, 1667446797550), ("host1", "idc_b", 50.0, 66.7, 40.6, 1667446797650), ("host1", "idc_b", 51.0, 66.5, 39.6, 1667446797750), ("host1", "idc_b", 52.0, 66.9, 70.6, 1667446797850), ("host1", "idc_b", 53.0, 63.0, 50.6, 1667446797950), ("host1", "idc_b", 78.0, 66.7, 20.6, 1667446798050), ("host1", "idc_b", 68.0, 63.9, 50.6, 1667446798150), ("host1", "idc_b", 90.0, 39.9, 60.6, 1667446798250); SELECT * FROM system_metrics;
复制代码


一切正常的话,你将可以看到查询的结果,示例如下:



我们可以登录阿里云 OSS 的控制台查看写入的数据:



为了提升查询性能,建议将本地文件缓存打开:


cache_path = "/path/local_cache"cache_capacity = "256MiB"
复制代码


cache_path 指定本地缓存的目录,cache_capacity 指定本地缓存使用的最大大小。


Have fun! ◔.̮◔✧

发布于: 刚刚阅读数: 4
用户头像

Greptime

关注

专注于 Infra 技术分享 2022-09-23 加入

分布式、高性能、存储计算分离的开源云原生时序数据库

评论

发布
暂无评论
使用指南|如何将 GreptimeDB 数据保存在阿里云 OSS_数据库_Greptime_InfoQ写作社区