暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

用户指南 | 快速迁移 InfluxDB v1 数据至 GreptimeDB

GreptimeDB 2024-05-30
85


GreptimeDB 以其强大的可扩展性和经济适用的云上存储能力,可以作为 InfluxDB 高效可行的替代方案。那么,如何将数据从 InfluxDB v1 迁移到 GreptimeDB?本文详细介绍了具体的迁移方法

GreptimeDB 具有基于云的弹性和强大经济的存储能力,因此可以作为 InfluxDB 的绝佳替代品。它也可被视为 InfluxDB v3 的生产就绪实施方案。

在上一篇文章中,我们演示了如何将数据从 InfluxDB v2 迁移到 GreptimeDB。不过,许多用户仍在使用 InfluxDB v1,因此我们写了这一篇教程:介绍如何将数据从 InfluxDB v1 迁移到 GreptimeDB。


01

前置条件



在开始之前,你需要能够访问部署 InfluxDB 的服务器,以直接操作数据文件。如果你使用 InfluxDB 的 v1.8 官方 Docker 镜像运行服务器,存储数据文件的引擎路径为 /var/lib/influxdb/


本教程将指导你如何迁移 InfluxDB 服务器上的数据,查看文末附录了解如何准备迁移环境。


02

创建 GreptimeDB 服务



在确定存储数据文件的引擎路径之后,首先创建一个 GreptimeDB 的服务作为数据迁移的目的地。


获取 GreptimeDB 集群最快的方式是注册 GreptimeCloudhttps://greptime.com/product/cloud 并启动一个 Hobby Plan Service(完全免费,不需要绑定银行卡)。


根据指示创建一个新的 GreptimeDB 服务,点击 Connection Information 按钮获取连接信息,设置所需的环境变量值:
export GREPTIME_DB="<dbname>"
export GREPTIME_HOST="<host>"
export GREPTIME_USERNAME="<username>"
export GREPTIME_PASSWORD="<password>"


(图 1:创建服务后显示的示意图)


03

从 InfluxDB v1 
服务器导出数据



执行以下命令,将存储在 InfluxDB 服务中的数据以行协议格式导出:
export DATABASE="<dbname>"
export ENGINE_PATH="<engine-path>"

influx_inspect export \
    -database $DATABASE \
    -lponly \
    -datadir $ENGINE_PATH/data \
    -waldir $ENGINE_PATH/wal \
    -out /tmp/influxdb_export.lp


如果你是按照文末附录启动的 InfluxDB 服务,可以运行以下命令在 Docker 容器环境里导出数据:
export DATABASE="mydb"
export ENGINE_PATH="/var/lib/influxdb"

docker exec influxdb1 influx_inspect export \
    -database $DATABASE \
    -lponly \
    -datadir $ENGINE_PATH/data \
    -waldir $ENGINE_PATH/wal \
    -out /tmp/influxdb_export.lp


命令行输出结果示例如下:
writing out wal file data for mydb/autogen...complete.


🌟 Tip
你可以指定更具体的数据集进行导出,如时间范围。
相关详细信息请参考指导手册:influx_inspect export
https://docs.influxdata.com/influxdb/v1/tools/influx_inspect/#export


04

把数据导入到
GreptimeDB



复制 influxdb_export.lp 到工作目录。如果你是按照文末附录做的配置,可以运行以下命令从  Docker 容器中拷贝数据文件到宿主机上:
docker cp influxdb2:/influxdb_export.lp influxdb_export.lp


在将数据导入 GreptimeDB 之前,如果数据文件过大,建议将数据文件分割为多个片段:
split -l 1000 -d -a 10 influxdb_export.lp influxdb_export_slice.
# -l [line_count]    Create split files line_count lines in length.
# -d                 Use a numeric suffix instead of a alphabetic suffix.
# -a [suffix_length] Use suffix_length letters to form the suffix of the file name.


现在,通过 HTTP API 将数据导入 GreptimeDB:
for file in influxdb_export_slice.*; do
    curl -i -H "Authorization: token $GREPTIME_USERNAME:$GREPTIME_PASSWORD" \
        -X POST "https://${GREPTIME_HOST}/v1/influxdb/api/v2/write?db=$GREPTIME_DB" \
        --data-binary @${file}
    # avoid rate limit in the hobby plan
    sleep 1
done


完成后,你可以在 GreptimeCloud 的 Web Dashboard 上检查已导入的数据。

(图 2:Web Dashboard 示意图)


(图 3:数据分析示意图)


(图 4:数据分析示意图 2)


附录:启动一个 InfluxDB v1 服务器

本节展示了如何启动一个 InfluxDB v1 服务器并准备示例数据。


首先进入到一个空目录,并运行以下 Docker 命令启动一个名为 influxdb1 的新容器:
docker run -p 8086:8086 --name influxdb1 influxdb:1.8


然后,启动一个交互式 influx shell 来访问刚刚部署的 InfluxDB 服务:
docker exec -it influxdb1 influx


通过 influx shell 创建一个数据库:

CREATE DATABASE mydb;
SHOW DATABASES;

然后,下载 InfluxDB 行协议格式的样例数据,并导入到刚刚创建的 mydb 数据库里:

curl -O https://raw.githubusercontent.com/influxdata/influxdb2-sample-data/master/air-sensor-data/air-sensor-data.lp
curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary @air-sensor-data.lp


通过 influx shell 确认数据已经成功导入:
USE mydb;
SELECT COUNT(*) FROM airSensors;

你应该看到以下输出结果:
name: airSensors
time count_co count_humidity count_temperature
---- -------- -------------- -----------------
0    5288     5288           5288





关于 Greptime

Greptime 格睿科技专注于为物联网(如智慧能源、智能汽车等)及可观测等产生大量时序数据的领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前主要有以下三款产品:


GreptimeDB 是一款用 Rust 语言编写的开源时序数据库,具有云原生、无限水平扩展、高性能和融合分析等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。我们提供 GreptimeDB 企业版,支持更多企业特性和定制化服务,如有需要欢迎联系我们:15310923206(同微信)。


GreptimeCloud 是一款全托管的云上数据库即服务(DBaaS)解决方案,基于开源时序数据库 GreptimeDB 打造,能够高效支持可观测、物联网、金融等领域的应用。用户可以通过内置的可观测性解决方案 GreptimeAI 全面掌握 LLM 应用的成本、性能、流量和安全等情况


车云一体解决方案 是一款深入车企实际业务场景的时序数据库解决方案,解决了企业车辆数据呈几何倍数增长后的实际业务痛点。多模态车端数据库结合云端 GreptimeDB 企业版帮助车企极大降低流量、计算和存储成本,并帮助提升数据实时性和业务洞察能力。


GreptimeDB 作为开源项目,欢迎对时序数据库、Rust 语言等内容感兴趣的同学们参与贡献和讨论。第一次参与项目的同学推荐先从带有 good first issue 标签的 issue 入手,期待在开源社群里遇见你!扫码添加小助手备注“技术交流群”立即加入讨论吧~


Star us on GitHub Now: 

https://github.com/GreptimeTeam/greptimedb


官网:https://greptime.cn/

文档:https://docs.greptime.cn/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/


点击下方链接🔗关注 GreptimeDB,了解更多技术干货👇

往期精彩文章:


👇 点击下方阅读原文,立即体验 GreptimeDB!


文章转载自GreptimeDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论