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

被折叠的 条评论
为什么被折叠?



