Wenn Sie einen PostgreSQL-Cluster in Betrieb haben und mit Daten umgehen müssen, die sich mit der Zeit ändern (z. B. von einem System erfasste Metriken), sollten Sie die Verwendung einer geeigneten Zeitreihendatenbank in Betracht ziehen um diese Art von Daten zu speichern.
TimescaleDB ist eine Open-Source-Zeitreihendatenbank, die für schnelle Aufnahme und komplexe Abfragen optimiert ist und vollständiges SQL unterstützt. Es basiert auf PostgreSQL und bietet das Beste aus NoSQL- und relationalen Welten für Zeitreihendaten.
In diesem Blog werden wir sehen, wie man TimescaleDB manuell in einer bestehenden PostgreSQL-Datenbank aktiviert und wie man die gleiche Aufgabe mit ClusterControl durchführt.
TimescaleDB manuell aktivieren
Für diesen Blog verwenden wir CentOS 7 als Betriebssystem und PostgreSQL 11 als Datenbankserver.
Standardmäßig ist TimescaleDB nicht für PostgreSQL aktiviert:
world=# \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(1 row)
Also müssen Sie zuerst das entsprechende Repository hinzufügen, um die Software zu installieren:
$ cat /etc/yum.repos.d/timescale_timescaledb.repo
[timescale_timescaledb]
name=timescale_timescaledb
baseurl=https://packagecloud.io/timescale/timescaledb/el/7/\$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/timescale/timescaledb/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
Wir gehen davon aus, dass Sie das PostgreSQL-Repository installiert haben, da diese TimescaleDB-Installation Abhängigkeiten von dort benötigt.
Der nächste Schritt ist die Installation des Pakets:
$ yum install timescaledb-postgresql-11
Und konfigurieren Sie es in Ihrer aktuellen PostgreSQL-Datenbank. Bearbeiten Sie dazu Ihre postgresql.conf-Datei und fügen Sie „timescaledb“ im Parameter shared_preload_libraries hinzu:
shared_preload_libraries = 'timescaledb'
Oder wenn Sie dort schon etwas hinzugefügt haben:
shared_preload_libraries = 'pg_stat_statements,timescaledb'
Sie können auch max_background_workers für TimescaleDB konfigurieren, um die maximale Anzahl von Hintergrundarbeitern anzugeben.
timescaledb.max_background_workers=4
Keep in mind that this change requires a database service restart:
$ service postgresql-11 restart
Und dann haben Sie Ihre TimescaleDB installiert:
postgres=# SELECT * FROM pg_available_extensions WHERE name='timescaledb';
name | default_version | installed_version | comment
-------------+-----------------+-------------------+-----------------------------------------------
--------------------
timescaledb | 1.6.0 | | Enables scalable inserts and complex queries f
or time-series data
(1 row)
Also müssen Sie es jetzt aktivieren:
$ psql world
world=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
WARNING:
WELCOME TO
_____ _ _ ____________
|_ _(_) | | | _ \ ___ \
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
| | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 1.6.0
For more information on TimescaleDB, please visit the following links:
1. Getting started: https://docs.timescale.com/getting-started
2. API reference documentation: https://docs.timescale.com/api
3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.
CREATE EXTENSION
Fertig.
world=# \dx
List of installed extensions
Name | Version | Schema | Description
-------------+---------+------------+--------------------------------------------------------------
-----
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
timescaledb | 1.6.0 | public | Enables scalable inserts and complex queries for time-series
data
(2 rows)
Sehen wir uns nun an, wie man es mit ClusterControl aktiviert.
ClusterControl verwenden, um TimescaleDB zu aktivieren
Wir gehen davon aus, dass Sie Ihren PostgreSQL-Cluster in ClusterControl importiert oder sogar damit bereitgestellt haben.
Um TimescaleDB mit ClusterControl zu aktivieren, müssen Sie nur zu Ihren PostgreSQL-Clusteraktionen gehen und auf die Option „Enable TimescaleDB“ klicken.
Sie erhalten eine Warnung zum Neustart der Datenbank. Bestätigen Sie es.
Sie können die Aufgabe im Abschnitt ClusterControl-Aktivität überwachen.
Dann haben Sie Ihre TimescaleDB einsatzbereit.
Fazit
Nachdem Sie Ihre TimescaleDB eingerichtet und ausgeführt haben, können Sie Ihre Zeitreihendaten performanter verarbeiten. Dazu können Sie neue Tabellen erstellen oder sogar Ihre aktuellen Daten migrieren, und natürlich sollten Sie wissen, wie man damit umgeht, um von diesem neuen Konzept zu profitieren.