关于使用pg的TimeScaleDB时序库实现数据备份和恢复的操作

前言:
因为我看到大部分的备份和恢复操作的文章大多十分简陋,并且大部分我实际操作下来并非能够成功实现,导致我耗费了大量时间进行实际操作和验证。——————————写于2025.9.2

 

版本环境:

postgreSql:17

TimeScaleDB插件:2.20.3

 

一、数据备份

1.首先打开cmd进入pg目录下的bin文件夹
这里可以直接本地打开bin文件夹后,在路径里输入cmd快速进入
输入以下代码:

pg_dump -h localhost -p 5432 -U username -F custom -b -v -f D:\backup\backup_file.dump database_name

参数:
username 为你的数据库管理员账号,默认为postgres

D:\backup\backup_file.dump 为备份数据的绝对路径,可以任意修改,但是注意前缀文件夹目录存在

database_name 为你要备份的数据库名称

pg可用的备份格式有很多,sql,dump,tar格式,但是这里只做提示,因为其他格式我无法实现恢复和备份,总会有各种问题。

这里备份成功后,可以查看输出日志,如果出现:

不用理会,这个是正常现象,不影响备份和恢复,已经过验证

 

二、恢复数据

1.还是刚刚的cmd窗口,也就是在bin目录下,输入以下命令链接到postgresSql:
 

psql -h localhost -p 5432 -U postgres

这里5432是数据库端口
postgres是用户
 

然后输入密码后,进入psql界面。

 

2.创建新的数据库:

CREATE DATABASE TestTimeScale_Restored;

这里有一个大坑,使用psql创建数据库时,是不分大小写的,例如我这里创建的是TestTimeScale_Restored,但实际上你创建的是CREATE DATABASE testtimescale_sestored.如果你想创建TestTimeScale_Restored,则需要使用双引号进行包裹CREATE DATABASE “TestTimeScale_Restored“

 

3.进入数据库:

\c testtimescale_restored

4.安装TimeScaleDB插件扩展:

CREATE EXTENSION IF NOT EXISTS timescaledb;

随后输入\q退出psql;

 

5.恢复数据库数据:
 

pg_restore -h localhost -p 5432 -U postgres -d testtimescale_restored -v D:\backup\backup_file.dump

随后需要你输入数据库密码后开始恢复数据

 

三、恢复后的一些验证命令

首先输入psql命令链接数据库:
 

psql -h localhost -p 5432 -U postgres -d testtimescale_restored

1.验证超表:
 

SELECT hypertable_name FROM timescaledb_information.hypertables;

 

2.验证chunks

SELECT * FROM timescaledb_information.chunks;

 

3.验证压缩设置:

-- 检查压缩设置详情
SELECT 
    ht.hypertable_name,
    cs.*
FROM timescaledb_information.hypertables ht
LEFT JOIN timescaledb_information.compression_settings cs 
    ON ht.hypertable_name = cs.hypertable_name
WHERE ht.hypertable_name IN ();

这里的IN里面填写你时序表的表名,使用单引号指定,比如:
('flooding', 'fallen_trees', 'landslides', 'road_collapse')

4.验证压缩策略:
 

SELECT 
    job_id,
    application_name,
    proc_name,
    hypertable_name,
    config
FROM timescaledb_information.jobs
WHERE proc_name LIKE '%compression%'
AND hypertable_name IN ();

这里的IN里面填写你时序表的表名,使用单引号指定,比如:
('flooding', 'fallen_trees', 'landslides', 'road_collapse')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值