Cài đặt TimescaleDB trên Ubuntu 20.04 | 18.04

TimescaleDB là một cơ sở dữ liệu mã nguồn mở được thiết kế để làm cho SQL có thể mở rộng cho dữ liệu chuỗi thời gian. Nó được thiết kế từ PostgreSQL và được đóng gói dưới dạng phần mở rộng PostgreSQL, cung cấp khả năng phân vùng tự động theo thời gian và không gian (khóa phân vùng), cũng như hỗ trợ SQL đầy đủ. Được đóng gói dưới dạng một phần mở rộng PostgreSQL, TimescaleDB được thiết kế để dễ sử dụng, dễ bắt đầu và dễ bảo trì.

Bước 1: Cập nhật hệ thống 

Đảm bảo hệ thống đang chạy các gói mới nhất.

sudo apt update
sudo apt upgrade

Khởi động lại hệ thống để đảm bảo mọi thứ hoạt động tốt

sudo reboot

Bước 2: Cài đặt PostgreSQL

TimescaleDB yêu cầu PostgreSQL 9.6 trở lên. Hướng dẫn cài đặt tại đây.

Bước 3: Cài đặt TimescaleDB trên Ubuntu 20.04 | 18.04

Bước cuối cùng là cài đặt TimescaleDB trên máy chủ. 
Thêm PPA:
sudo add-apt-repository ppa:timescale/timescaledb-ppa
Cập nhật chỉ mục gói APT để xác nhận xem liệu kho lưu trữ repo có thực sự đã được thêm vào hay không:
$ sudo apt-get update
Hit:1 https://download.docker.com/linux/ubuntu focal InRelease
Hit:2 http://apt.postgresql.org/pub/repos/apt focal-pgdg InRelease
Hit:3 http://ppa.launchpad.net/timescale/timescaledb-ppa/ubuntu focal InRelease
Hit:4 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:5 http://nova.clouds.archive.ubuntu.com/ubuntu focal InRelease
Hit:6 http://nova.clouds.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:7 http://nova.clouds.archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
Sau đó cài đặt TimescaleDB cho PostgreSQL 12:
sudo apt install timescaledb-postgresql-12
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
postgresql-12 postgresql-client-12 timescaledb-loader-postgresql-12 timescaledb-tools
Suggested packages:
postgresql-doc-12 libpq-dev
The following NEW packages will be installed:
postgresql-12 postgresql-client-12 timescaledb-loader-postgresql-12 timescaledb-postgresql-12 timescaledb-tools
0 upgraded, 5 newly installed, 0 to remove and 60 not upgraded.
Need to get 19.8 MB of archives.
After this operation, 85.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Bây giờ hãy cập nhật cài đặt cấu hình PostgreSQL cho TimescaleDB:
sudo timescaledb-tune --quiet --yes
Output thực thi lệnh:
sing postgresql.conf at this path:
/etc/postgresql/12/main/postgresql.conf

Writing backup to:
/tmp/timescaledb_tune.backup202110271433

Recommendations based on 1.94 GB of available memory and 2 CPUs for PostgreSQL 12
shared_preload_libraries = 'timescaledb' # (change requires restart)
shared_buffers = 508786kB
effective_cache_size = 1490MB
maintenance_work_mem = 254393kB
work_mem = 12719kB
timescaledb.max_background_workers = 8
max_worker_processes = 13
max_parallel_workers_per_gather = 1
max_parallel_workers = 2
wal_buffers = 15262kB
min_wal_size = 512MB
default_statistics_target = 500
random_page_cost = 1.1
checkpoint_completion_target = 0.9
max_connections = 20
max_locks_per_transaction = 64
autovacuum_max_workers = 10
autovacuum_naptime = 10
effective_io_concurrency = 200
timescaledb.last_tuned = '2021-10-27T14:33:21Z'
timescaledb.last_tuned_version = '0.11.0'
Saving changes to: /etc/postgresql/12/main/postgresql.conf
Khởi động lại dịch vụ PostgreSQL sau khi thực hiện thay đổi:
sudo systemctl restart postgresql 
NẾU KHÔNG ĐƯỢC, bạn cần cập nhật chỉnh sửa postgresql.conf để tải các thư viện TimescaleDB cần thiết theo cách thủ công:
sudo vim /etc/postgresql/12/main/postgresql.conf
Tìm dòng bên dưới và thay đổi giá trị như được hiển thị (bỏ ghi chú nếu cần):
shared_preload_libraries = 'timescaledb'

Khởi động lại dịch vụ postgresql sau khi lưu các thay đổi:
sudo systemctl restart postgresql 
Xác nhận nếu dịch vụ postgresql đã được khởi động lại thành công mà không gặp bất kỳ sự cố nào:
$ systemctl status postgresql@12-main.service
postgresql@12-main.service - PostgreSQL Cluster 12-main
Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled-runtime; vendor preset: enabled)
Active: active (running) since Wed 2021-10-27 14:35:58 UTC; 1min 5s ago
Process: 7461 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 12-main start (code=exited, status=0/SUCCESS)
Main PID: 7483 (postgres)
Tasks: 8 (limit: 2343)
Memory: 36.2M
CGroup: /system.slice/system-postgresql.slice/postgresql@12-main.service
├─7483 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
├─7485 postgres: 12/main: checkpointer
├─7486 postgres: 12/main: background writer
├─7487 postgres: 12/main: walwriter
├─7488 postgres: 12/main: autovacuum launcher
├─7489 postgres: 12/main: stats collector
├─7490 postgres: 12/main: TimescaleDB Background Worker Launcher
└─7491 postgres: 12/main: logical replication launcher

Oct 27 14:35:55 frank-ubuntu-01 systemd[1]: postgresql@12-main.service: Succeeded.
Oct 27 14:35:55 frank-ubuntu-01 systemd[1]: Stopped PostgreSQL Cluster 12-main.
Oct 27 14:35:55 frank-ubuntu-01 systemd[1]: Starting PostgreSQL Cluster 12-main...
Oct 27 14:35:58 frank-ubuntu-01 systemd[1]: Started PostgreSQL Cluster 12-main.

Bước 4: Kiểm tra cài đặt TimescaleDB trên Ubuntu 20.04 | 18.04

Bây giờ có thể kiểm tra cài đặt TImescaleDB bằng cách tạo cơ sở dữ liệu trống mới hoặc chuyển đổi cơ sở dữ liệu PostgreSQL hiện có sang sử dụng TimescaleDB.

Kết nối với PostgreSQL, sử dụng superuser có tên là postgres
$ sudo su - postgres
$ psql
psql (10.5 (Ubuntu 10.5-1.pgdg18.04+1))
Type "help" for help.
postgres=# CREATE database test_db;
CREATE DATABASE
Thêm TimescaleDB:
Kết nối với cơ sở dữ liệu
postgres=# \c test_db
You are now connected to database "test_db" as user "postgres".
Mở rộng cơ sở dữ liệu với TimescaleDB
test_db=# CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
WARNING:
WELCOME TO
_____ _ _ ____________
|_ _(_) | | | _ \ ___ \
| | _ _ __ ___ ___ ___ ___ __ _| | ___| | | | |_/ /
| | | | _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
| | | | | | | | | __/\__ \ (_| (_| | | __/ |/ /| |_/ /
|_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 0.12.1
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
Kết nối với cơ sở dữ liệu mới tạo:
psql -U postgres -h localhost -d test_db