TimescaleDB安装与配置 #

一、安装要求 #

1.1 系统要求 #

text
系统要求:

操作系统
├── Linux(推荐)
│   ├── Ubuntu 18.04+
│   ├── Debian 10+
│   ├── CentOS 7+
│   └── RHEL 7+
├── macOS 10.14+
└── Windows 10+

硬件要求
├── CPU: 2核心以上
├── 内存: 4GB以上
├── 磁盘: SSD推荐
└── 网络: 稳定连接

1.2 PostgreSQL版本 #

text
PostgreSQL版本支持:

PostgreSQL版本    TimescaleDB支持
─────────────────────────────────
PostgreSQL 11     有限支持
PostgreSQL 12     支持
PostgreSQL 13     支持
PostgreSQL 14     支持
PostgreSQL 15     推荐
PostgreSQL 16     支持

二、Docker安装 #

2.1 快速启动 #

bash
# 拉取镜像
docker pull timescale/timescaledb:latest-pg15

# 启动容器
docker run -d --name timescaledb \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=password \
    -e POSTGRES_USER=postgres \
    -e POSTGRES_DB=tsdb \
    timescale/timescaledb:latest-pg15

# 查看容器状态
docker ps | grep timescaledb

2.2 数据持久化 #

bash
# 创建数据目录
mkdir -p ~/timescaledb/data

# 启动容器(持久化数据)
docker run -d --name timescaledb \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=password \
    -v ~/timescaledb/data:/var/lib/postgresql/data \
    timescale/timescaledb:latest-pg15

2.3 配置文件挂载 #

bash
# 创建配置目录
mkdir -p ~/timescaledb/config

# 复制默认配置
docker cp timescaledb:/etc/postgresql/postgresql.conf ~/timescaledb/config/

# 启动容器(挂载配置)
docker run -d --name timescaledb \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=password \
    -v ~/timescaledb/data:/var/lib/postgresql/data \
    -v ~/timescaledb/config/postgresql.conf:/etc/postgresql/postgresql.conf \
    timescale/timescaledb:latest-pg15

2.4 Docker Compose #

yaml
# docker-compose.yml
version: '3.8'

services:
  timescaledb:
    image: timescale/timescaledb:latest-pg15
    container_name: timescaledb
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
      POSTGRES_DB: tsdb
    ports:
      - "5432:5432"
    volumes:
      - timescaledb_data:/var/lib/postgresql/data
      - ./postgresql.conf:/etc/postgresql/postgresql.conf

volumes:
  timescaledb_data:
bash
# 启动服务
docker-compose up -d

# 停止服务
docker-compose down

# 查看日志
docker-compose logs -f timescaledb

三、Ubuntu/Debian安装 #

3.1 添加仓库 #

bash
# 更新包列表
sudo apt-get update

# 安装依赖
sudo apt-get install -y wget gnupg2 lsb-release

# 添加TimescaleDB仓库
echo "deb [signed-by=/usr/share/keyrings/timescale.keyring] https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" | sudo tee /etc/apt/sources.list.d/timescaledb.list

# 添加GPG密钥
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/timescale.keyring

# 更新包列表
sudo apt-get update

3.2 安装TimescaleDB #

bash
# 安装PostgreSQL(如果未安装)
sudo apt-get install -y postgresql-15

# 安装TimescaleDB
sudo apt-get install -y timescaledb-2-postgresql-15

# 启动PostgreSQL服务
sudo systemctl start postgresql
sudo systemctl enable postgresql

3.3 配置TimescaleDB #

bash
# 运行配置脚本
sudo timescaledb-tune --quiet --yes

# 重启PostgreSQL
sudo systemctl restart postgresql

3.4 验证安装 #

bash
# 切换到postgres用户
sudo -u postgres psql

# 在psql中执行
CREATE EXTENSION IF NOT EXISTS timescaledb;

-- 查看版本
\dx timescaledb

四、CentOS/RHEL安装 #

4.1 添加仓库 #

bash
# 安装EPEL仓库
sudo yum install -y epel-release

# 添加TimescaleDB仓库
sudo tee /etc/yum.repos.d/timescale_timescaledb.repo <<EOL
[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
EOL

# 更新缓存
sudo yum makecache

4.2 安装TimescaleDB #

bash
# 安装PostgreSQL(如果未安装)
sudo yum install -y postgresql15-server

# 初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

# 安装TimescaleDB
sudo yum install -y timescaledb_15

# 启动服务
sudo systemctl start postgresql-15
sudo systemctl enable postgresql-15

4.3 配置TimescaleDB #

bash
# 配置TimescaleDB
sudo timescaledb-tune --quiet --yes

# 重启服务
sudo systemctl restart postgresql-15

五、macOS安装 #

5.1 Homebrew安装 #

bash
# 安装PostgreSQL
brew install postgresql@15

# 启动PostgreSQL
brew services start postgresql@15

# 安装TimescaleDB
brew tap timescale/tap
brew install timescaledb

# 安装扩展
cd /opt/homebrew/Cellar/timescaledb/<version>/bin
./timescaledb_move.sh

5.2 验证安装 #

bash
# 连接数据库
psql postgres

# 创建扩展
CREATE EXTENSION IF NOT EXISTS timescaledb;

-- 查看版本
SELECT extversion FROM pg_extension WHERE extname = 'timescaledb';

六、Windows安装 #

6.1 下载安装 #

text
Windows安装步骤:

1. 下载PostgreSQL
   └── https://www.postgresql.org/download/windows/

2. 安装PostgreSQL
   └── 运行安装程序,按提示完成安装

3. 下载TimescaleDB
   └── https://timescale.com/downloads

4. 安装TimescaleDB
   └── 解压到PostgreSQL安装目录

5. 配置postgresql.conf
   └── shared_preload_libraries = 'timescaledb'

6.2 配置文件 #

ini
# postgresql.conf

# 添加TimescaleDB到预加载库
shared_preload_libraries = 'timescaledb'

# 其他推荐配置
max_connections = 100
shared_buffers = 256MB
effective_cache_size = 768MB
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 2621kB
min_wal_size = 1GB
max_wal_size = 4GB

七、配置优化 #

7.1 timescaledb-tune工具 #

bash
# 自动配置优化
timescaledb-tune

# 交互式配置
timescaledb-tune --interactive

# 静默模式(使用默认值)
timescaledb-tune --quiet --yes

# 指定配置文件
timescaledb-tune --conf-path=/etc/postgresql/15/main/postgresql.conf

7.2 关键配置参数 #

ini
# postgresql.conf

# 内存配置
shared_buffers = 4GB              # 共享缓冲区
effective_cache_size = 12GB       # 有效缓存大小
work_mem = 64MB                   # 工作内存
maintenance_work_mem = 1GB        # 维护工作内存

# WAL配置
wal_buffers = 64MB
checkpoint_completion_target = 0.9
max_wal_size = 2GB
min_wal_size = 1GB

# 并行查询
max_worker_processes = 8
max_parallel_workers_per_gather = 4
max_parallel_workers = 8

# TimescaleDB特定配置
timescaledb.max_background_workers = 8
timescaledb.last_tuned = '2024-01-01 00:00:00'
timescaledb.last_tuned_version = '2.0.0'

7.3 连接配置 #

ini
# postgresql.conf

# 监听地址
listen_addresses = '*'            # 监听所有地址
port = 5432                       # 端口号

# 最大连接数
max_connections = 200

# 连接保持
tcp_keepalives_idle = 60
tcp_keepalives_interval = 10
tcp_keepalives_count = 6

7.4 日志配置 #

ini
# postgresql.conf

# 日志设置
logging_collector = on
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = 1d
log_rotation_size = 100MB

# 日志内容
log_min_duration_statement = 1000  # 记录超过1秒的查询
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on

八、创建扩展 #

8.1 在数据库中启用 #

sql
-- 连接数据库
psql -U postgres -d mydb

-- 创建扩展
CREATE EXTENSION IF NOT EXISTS timescaledb;

-- 查看扩展信息
\dx timescaledb

-- 查看版本
SELECT extversion FROM pg_extension WHERE extname = 'timescaledb';

8.2 验证安装 #

sql
-- 检查TimescaleDB函数
SELECT proname 
FROM pg_proc 
WHERE proname LIKE 'timescaledb%'
LIMIT 10;

-- 检查超表信息
SELECT * FROM timescaledb_information.hypertables;

-- 检查后台工作进程
SELECT * FROM timescaledb_information.background_workers;

九、升级TimescaleDB #

9.1 升级前准备 #

bash
# 备份数据
pg_dump -U postgres mydb > mydb_backup.sql

# 或者使用pg_dumpall
pg_dumpall -U postgres > all_backup.sql

# 检查当前版本
psql -U postgres -c "SELECT extversion FROM pg_extension WHERE extname = 'timescaledb';"

9.2 升级步骤 #

bash
# 停止服务
sudo systemctl stop postgresql

# 升级包
sudo apt-get update
sudo apt-get install timescaledb-2-postgresql-15

# 启动服务
sudo systemctl start postgresql

# 升级扩展
psql -U postgres -d mydb -c "ALTER EXTENSION timescaledb UPDATE;"

9.3 升级后验证 #

sql
-- 检查版本
SELECT extversion FROM pg_extension WHERE extname = 'timescaledb';

-- 检查超表
SELECT hypertable_name, num_chunks 
FROM timescaledb_information.hypertables;

-- 检查连续聚合
SELECT * FROM timescaledb_information.continuous_aggregates;

十、常见问题 #

10.1 扩展创建失败 #

sql
-- 错误:could not open extension control file

-- 解决方案:检查shared_preload_libraries
SHOW shared_preload_libraries;

-- 如果没有timescaledb,需要修改配置
-- postgresql.conf:
-- shared_preload_libraries = 'timescaledb'

-- 重启PostgreSQL后重试

10.2 权限问题 #

sql
-- 授权用户创建扩展
GRANT CREATE ON DATABASE mydb TO myuser;

-- 授权使用TimescaleDB函数
GRANT USAGE ON SCHEMA public TO myuser;

10.3 端口冲突 #

bash
# 检查端口占用
netstat -tlnp | grep 5432

# 修改端口
# postgresql.conf:
# port = 5433

# 重启服务
sudo systemctl restart postgresql

十一、总结 #

安装要点:

平台 推荐方式 难度
开发环境 Docker 简单
Ubuntu/Debian apt包管理 简单
CentOS/RHEL yum包管理 中等
macOS Homebrew 简单
Windows 安装包 中等

配置要点:

  1. 预加载库:必须配置shared_preload_libraries
  2. 内存配置:根据服务器资源合理配置
  3. 连接配置:根据并发需求调整
  4. 日志配置:便于问题排查

下一步,让我们学习SQL基础语法!

最后更新:2026-03-27