Data retention for Clickhouse persistent data storage

Home FastNetMon Advanced Technical Documentation Data retention for Clickhouse persistent data storage
Contents

FastNetMon creates all tables in Clickhouse with configuration to remove all data older than 7 days by default. It implemented using TTL capability in Clickhouse.

You may alter this value using this guide. Run Clickhouse client:

clickhouse-client

Then switch to database "fastnetmon" in clickhouse-client interface:

USE fastnetmon

FastNetMon uses multiple tables, and you will need to repeat actions for all of them. List all available tables:

show tables

You will see the following list, (simply an example, as you may have more or fewer tables, as it depends on configuration):

asn_metrics_ipv4
asn_metrics_ipv6
host_metrics
network_metrics
total_metrics
traffic

Optionally, you may find which table uses most of data using this query:

SELECT
  database,
  table,
  formatReadableSize(sum(bytes)) AS size
FROM system.parts
WHERE active
GROUP BY
  database,
  table
ORDER BY sum(bytes) DESC

Example output will look this way:

┌─database───┬─table────────────┬─size──────┐
│ fastnetmon │ traffic          │ 4.81 GiB  │
│ fastnetmon │ host_metrics     │ 3.68 GiB  │
│ fastnetmon │ asn_metrics_ipv4 │ 2.01 GiB  │
│ fastnetmon │ total_metrics    │ 27.80 MiB │
│ fastnetmon │ network_metrics  │ 12.20 MiB │
└────────────┴──────────────────┴───────────┘

To check current retention setup you can use following command:

show create table total_metrics

And then check for TTL section in output:

CREATE TABLE fastnetmon.total_metrics
(
    `metricDate` Date DEFAULT toDate(metricDateTime),
    `metricDateTime` DateTime,
    `direction` String,
    `flows` UInt64,
    `packets` UInt64,
    `bits` UInt64
)
ENGINE = MergeTree
PARTITION BY metricDate
ORDER BY (direction, metricDate)
TTL metricDate + toIntervalDay(7)
SETTINGS index_granularity = 8192 

In this case it means that Clickhouse will remove data after 7 days.

And then you can reduce or extend period to keep data using following query:

ALTER TABLE total_metrics MODIFY TTL metricDate + toIntervalDay(8);

Do not forget to repeat this command for all tables.