当InfluxDB重启时,我的所有数据点都会丢失

时间:2016-03-29 16:44:48

标签: java influxdb

正在使用cron作业每天关闭一次此脚本。当脚本运行时,它似乎按预期工作。代码构建一个映射,迭代该映射,创建添加到批处理的点,最后将这些批处理的点写入InfluxDB。我可以连接到InfluxDB,我可以查询我的数据库,看看这些点已被添加。我使用 influxdb-java 2.2

我遇到的问题是,当重新启动InfluxDB时,我的所有数据都将被删除。数据库仍然存在且系列仍然存在,但是,所有的点/行都消失了(每个表都是空的)。我的数据库不是唯一的数据库,还有其他几个,这些数据库是正确恢复的。我的猜测是该交易尚未最终确定。我不知道如何让它做同花顺并确保我的积分持续存在。我试着补充说:

influxDB.write(batchPoints);
influxDB.disableBatch();  // calls this.batchProcessor.flush() in InfluxDBImpl.java 

这是强制冲洗的尝试,但这并没有按预期工作。我正在使用 InfluxDB 0.13.X

    InfluxDB influxDB = InfluxDBFactory.connect(host, user, pass);

    String dbName = "dataName";
    influxDB.createDatabase(dbName);

    BatchPoints batchPoints = BatchPoints
            .database(dbName)
            .tag("async", "true")
            .retentionPolicy("default")
            .consistency(ConsistencyLevel.ALL)
            .build();

    for (Tags type: Tags.values()) {
        List<LinkedHashMap<String, Object>> myList = this.trendsMap.get(type.getDisplay());

        if (myList != null) {
            for (LinkedHashMap<String, Object> data : myList) {
                Point point = null;
                long time = (long) data.get("time");
                if (data.get("date").equals(this.sdf.format(new Date()))) { 
                    time = System.currentTimeMillis();
                }

                point = Point.measurement(type.getDisplay())
                .time(time, TimeUnit.MILLISECONDS)
                .field("count", data.get("count"))
                .field("date", data.get("date"))
                .field("day_of_week", data.get("day_of_week"))
                .field("day_of_month", data.get("day_of_month"))
                .build();

                batchPoints.point(point);
            }
        }
    }

    influxDB.write(batchPoints);

1 个答案:

答案 0 :(得分:0)

你可以将InfluxDB升级到0.11.0吗?从那以后发生了许多重要的变化,最好对此进行测试。