IoTDB 企业篇入门教程③:数据同步与增量备份实战指南

文章目录

  • 一、前文
  • 二、系统架构
  • 三、准备两台服务器
  • 四、新建任务
  • 五、数据同步测试
  • 六、遇到的问题
  • 一、前文

    IoTDB入门教程——导读

  • 数据库备份与迁移是数据库运维中的核心任务,其重要性不言而喻。
  • 确保备份过程既简单快捷又稳定可靠,对于保障数据安全与业务连续性至关重要。
  • 如果是使用开源版本IoTDB,那么有如下三种数据同步和备份的方法,可供选择。

  • IoTDB 入门教程 基础篇⑨——TsFile导入导出工具
  • IoTDB 入门教程 基础篇⑩——CSV导入导出工具
  • IoTDB 入门教程 基础篇⑪——Data导入导出工具
  • 但是,这些操作略显繁琐,不如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的版本必须一致。
  • 觉得好,就一键三连呗(点赞+收藏+关注)

    作者:小康师兄

    物联沃分享整理
    物联沃-IOTWORD物联网 » IoTDB 企业篇入门教程③:数据同步与增量备份实战指南

    发表回复