timescaledb 时序库备份还原 遇到的问题与解决

Posted yang_z_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了timescaledb 时序库备份还原 遇到的问题与解决相关的知识,希望对你有一定的参考价值。

timescaledb 时序库备份还原 遇到的问题与解决

timescaledb 是 postgres数据库的插件,所以备份还原仍然用postgres数据库pg_dump,pg_restore命令。

一 测试过程

timescaledb 时序库备份还原时 , 我对时序库采用以下命令进行全库备份

/usr/pgsql-11/bin/pg_dump --file "/u01/pgsql.backup" --host "0.0.0.0" --port "5432" --username "postgres" --dbname "原数据库名" --verbose --role "postgres" --format=c --blobs --encoding "UTF8"

还原命令如下

cs=#  SELECT timescaledb_pre_restore();
pg_restore --username "postgres" --host "10.10.2.116" --port "5432"   --role "postgres" --dbname "原数据库名"    --verbose /u01/pgsql.backup 
cs=# SELECT timescaledb_post_restore();

还原结束后,原库的数据全部还原成功,如果原库是超表,新库也是超表,子分区跟原库一模一样,原库有压缩分区,新库也自动是压缩分区,新库查询时没有任何问题。

分区还原没有问题,压缩的块也是一样还原了。

发现的问题
当往还原的超表插入新的数据时报错,错误如下:

ERROR: invalid INSERT on the root table of hypertable “超表名”
HINT: Make sure the TimescaleDB extension has been preloaded.

无法往超表主表插入数据,但是往分区插入没有任何问题。

目前的解决办法:
timescaledb的超表重新创建,数据采用csv格式导入,但是这种方法导入速度慢。

其他测试
1.单独对超表进行备份,发现主表无数据,让对子分区进行备份。
2.单独备份子分区,还原后只会还原子分区,跟超表没有关联。

二 问题解决

经过上述的测试 ,发现出现这个问题,现在我们来处理一下。

ERROR: invalid INSERT on the root table of hypertable “超表名”
HINT: Make sure the TimescaleDB extension has been preloaded.

这个问题一般是版本不一致,或者还原没有开启备份模式,也没有进到数据库里面

timescaledb时序库 开始 还原

1.备份 源文件

/usr/pgsql-11/bin/pg_dump --file “/u01/pgsql.backup” --host “0.0.0.0” --port “5432” --username “postgres” --dbname “原数据库名” --verbose --role “postgres” --format=c --blobs --encoding “UTF8”

2.把备份文件上传到新的时序库位置

这里可以用 scp,也可以使用ftp传输,看具体情况

3.查询 timescaledb 的版本是否一致

查看pg所安装插件信息:

select name from pg_available_extensions;

4.开始timescaledb还原:

创建数据库

CREATE DATABASE tutorial;

进入数据库,创建模式

\\c tutorial        --(这步一定要有,没有就会报错)

CREATE EXTENSION timescaledb;

开启备份模式

SELECT timescaledb_pre_restore();

进行还原

\\! pg_restore -Fc -d tutorial tutorial.bak

还原完毕结束备份模式

SELECT timescaledb_post_restore();

这几步一定要在一个窗口内执行。

经过测试发现超表能插入数据了,这样也就成功还原了timescaledb 时序库,这个问题也解决了。

以上是关于timescaledb 时序库备份还原 遇到的问题与解决的主要内容,如果未能解决你的问题,请参考以下文章

timescaledb 时序库备份还原 遇到的问题与解决

Centos7 安装 PostgreSql 14 数据库 和 timescaledb 时序库

Linux 上 PostgreSql 14 数据库 和 timescaledb 时序库 数据迁移测试

Linux 上 PostgreSql 14 数据库 和 timescaledb 时序库 数据迁移测试

基于PostgreSQL的时序数据库TimescaleDB(下)

快速入门:Java 连接使用 时序数据库 TimescaleDB