IoTDB 入门教程 企业篇③——数据同步和增量备份

一、前文

IoTDB入门教程——导读

  • 数据库备份与迁移是数据库运维中的核心任务,其重要性不言而喻。
  • 确保备份过程既简单快捷又稳定可靠,对于保障数据安全与业务连续性至关重要。

如果是使用开源版本IoTDB,那么有如下三种数据同步和备份的方法,可供选择。

但是,这些操作略显繁琐,不如IoTDB企业版(TimechoDB)所使用的数据同步的功能,来的方便快捷和高效。

二、系统架构

  • 业务(应用)服务器只能部署在互联网(外网)上。但是,众所周知,外网很危险
  • 就算你的技术能力再强,也没有绝对的安全。红客和黑客之间是没有绝对的赢家。
  • 而这其中,最值钱是数据(用户数据),最要命的也是数据。
  • 就比如银行的服务器被攻击了,导致银行的数据库被销毁和篡改,那是不是很致命?
  • 数据安全有两方面,数据防篡改数据防泄漏。基于此考虑,我们做简单的系统架构设计(如下图所示)。
  • 数据防篡改:互联网端的数据,定时通过网闸同步到内网中的数据库中,网闸只进不出。
  • 数据防泄漏:互联网端的数据,定期删除(如需查询历史数据,再增加额外的端口和安全机制从内网的数据库中查询)。
    在这里插入图片描述

所以,综上所述,数据同步和备份是一个安全的服务器的刚需。

而TimechoDB的数据同步功能恰恰满足了这个需求,而且用起来极其方便。

三、准备两台服务器

切记:两台服务器的IoTDB的版本必须一致。

  • IoTDB企业版(TimechoDB)——>做互联网端的数据库
[root@iZgw0bdpdtyqxyz77dha9nZ iotdb-enterprise-1.3.1.4-bin]# bash sbin/start-cli.sh 
---------------------
Starting IoTDB Cli
---------------------
 _____       _________  ______   ______    
|_   _|     |  _   _  ||_   _ `.|_   _ \   
  | |   .--.|_/ | | \_|  | | `. \ | |_) |  
  | | / .'`\ \  | |      | |  | | |  __'.  
 _| |_| \__. | _| |_    _| |_.' /_| |__) | 
|_____|'.__.' |_____|  |______.'|_______/  Enterprise version 1.3.1.4 (Build: 9658c9d)
                                           

Successfully login at 127.0.0.1:6667
IoTDB> select * from root.test.test order by time desc
+----+---------------------+
|Time|root.test.test.status|
+----+---------------------+
+----+---------------------+
Empty set.
It costs 0.024s
  • IoTDB开源版——>做内网端的数据库
[root@VM-0-3-centos apache-iotdb-1.3.1-all-bin]# bash sbin/start-cli.sh 
---------------------
Starting IoTDB Cli
---------------------
 _____       _________  ______   ______    
|_   _|     |  _   _  ||_   _ `.|_   _ \   
  | |   .--.|_/ | | \_|  | | `. \ | |_) |  
  | | / .'`\ \  | |      | |  | | |  __'.  
 _| |_| \__. | _| |_    _| |_.' /_| |__) | 
|_____|'.__.' |_____|  |______.'|_______/  version 1.3.1 (Build: 214695d)
                                           

Successfully login at 127.0.0.1:6667
IoTDB> select status from root.test.test
+----+---------------------+
|Time|root.test.test.status|
+----+---------------------+
+----+---------------------+
Empty set.
It costs 0.018s

四、新建任务

  • 新建数据同步的任务
    在这里插入图片描述在这里插入图片描述

五、数据同步测试

  • 互联网端的数据库插入一条数据
IoTDB> insert into root.test.test(status) values(0)
Msg: The statement is executed successfully.

在这里插入图片描述

  • 内网端的数据库同步到了数据
IoTDB> select status from root.test.test
+-----------------------------+---------------------+
|                         Time|root.test.test.status|
+-----------------------------+---------------------+
|2024-08-05T22:32:50.872+08:00|                  0.0|
+-----------------------------+---------------------+
Total line number = 1
It costs 0.013s

在这里插入图片描述

六、遇到的问题

  • 刚开始互联网端的数据库版本的是iotdb-enterprise-1.3.1.4-bin,内网端的数据库版本是apache-iotdb-1.3.2-all-bin
  • 结果数据同步就失败,报如下错误。
2024-08-05T16:24:56.451, Failed to transfer tsfile insertion event PipeTsFileInsertionEvent{isTsFileFormatValid=true, resource=file is /home/iotdb-enterprise-1.3.1.4-bin/data/datanode/data/sequence/root.test/1/2848/1722562250962-2-0-0.tsfile, status: NORMAL, tsFile=/home/iotdb-enterprise-1.3.1.4-bin/data/datanode/data/pipe/tsfile/sequence-root.test-1-2848-1722562250962-2-0-0.tsfile, isLoaded=false, isGeneratedByPipe=false, isClosed=true, dataContainer=null} - EnrichedEvent{referenceCount=1, pipeName='测试', pipeTaskMeta=PipeTask{progressIndex='MinimumProgressIndex{}', leaderDataNodeId=1, exceptionMessages='{}'}, committerKey='测试_1', commitId=2, pattern='root', startTime=-28800000, endTime=1722825127000, isPatternParsed=true, isTimeParsed=true, shouldReportOnCommit=false}, because Seal file /home/iotdb-enterprise-1.3.1.4-bin/data/datanode/data/pipe/tsfile/sequence-root.test-1-2848-1722562250962-2-0-0.tsfile error, result status TSStatus(code:1810, message:Auto create or verify schema error when executing statement LoadTsFileStatement{file=/home/apache-iotdb-1.3.2-all-bin/data/datanode/system/pipe/receiver/3/sequence-root.test-1-2848-1722562250962-2-0-0.tsfile, deleteAfterLoad=true, databaseLevel=1, verifySchema=true, tsFiles Size=1}.).. 

在这里插入图片描述

  • 后面将内网端的数据库版本改成apache-iotdb-1.3.1-all-bin,就正常了。
  • 所以,切记:两台服务器的IoTDB的版本必须一致。

觉得好,就一键三连呗(点赞+收藏+关注)

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小康师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值