Skip to content

v1.2.0

Compare
Choose a tag to compare
@ShiKaiWi ShiKaiWi released this 08 May 06:27
· 1 commit to release-1.2 since this release
3fadba6

Upgrade Guide

NOTE: this guide is only used for upgrading CeresDB v1.1.0 to CeresDB v1.2.0, ignore it if you want to deploy a brand new CeresDB cluster with v1.2.0.

In v1.2.0, some incompatible changes are contained, so it's important to upgrade carefully:

  1. First, stop all the instances of CeresDB and CeresMeta;
  2. Upgrade the CeresMeta first by referring to the Upgrade Guide of CeresMeta;
  3. When upgrade the CeresDB, the config should be updated:
  • Change the config section [analytic.compaction_config] to [analytic.compaction] if you use it;
  • Add the config section about the [cluster_deployment.etcd_client] if your CeresDB cluster is in WithMeta mode:
[cluster_deployment.etcd_client]
server_addrs = ['127.0.0.1:2379']
root_path = "/rootPath"

NOTE: the root_path must be /rootPath if upgrade from v1.1.0.
4. After updating CeresDB config, start the CeresDB server;

Major Features

  • Enhancement on InfluxQL support:
    • Support query with aggregators;
    • #854 optimize influxql planner to load all tables on demand instead of loading them when initializing the planner;
    • Replace influxdb_iox with CeresDB/influxql to remove unnecessary dependencies introduced by influxdb_iox;
  • Enhancement on proxy module:
    • Implement the proxy as a separate module;
    • Support forward table requests in proxy;
    • Support read and write on partition table in proxy;
    • Recover the metadata of partition table from CeresMeta instead of CeresDB in proxy;
  • Improvement of write performance:
    • #822 solves the problem that compaction schedule triggered by flush procedure may block the write procedure;
    • #814 is a big change set, and replaces the write queue with the lock on table level for less write contentions;
    • #843 adjusts the flush strategy to avoid frequent write stall;
    • #861 brings the level 1 to SSTs, and currently the SST of the level 0, which is generated by flushing, won't contain complex indexes, e.g. xor-filter, leading to faster flushing and less write stall;
  • Enhancement on observability:
    • #774 introduces the hotspot recorder that can be used to find out the top tables with the highest write/read throughput in a specific time window;
    • #827 #831 provides more metrics for all the stages of writing procedure, which can be used to troubleshoot write performance problems, and the grafana dashboard config has been already updated.
    • #817 introduces the CPU profiler, and the flamegraph of CPU can be generated easily just by an HTTP request to CeresDB server;
  • Support the new mechanism of failover and load balancing, more details can refer to the [Release Note v1.2.0] of CeresMeta:
    • #706 #853 implements the distributed locks for shard based on ETCD, and opening and closing of shards is only allowed with the shard lock held, and after that, data corruption caused by multiple shard leaders will be avoided completely;
    • Support automatic failover of CeresDB nodes, that is to say, the service recovery can be handled automatically without any manual intervention;
    • Support automatic load balance based on consistent hashing, which can ensure that shards are evenly distributed on each node of the cluster when the number of the cluster nodes increases or decreases;

Thanks

Heartfelt thanks for @zouxiang1993's effort in helping troubleshooting write performance issues.

What's Changed

Full Changelog: v1.1.0...v1.2.0