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 时序库备份还原 遇到的问题与解决的主要内容,如果未能解决你的问题,请参考以下文章
Centos7 安装 PostgreSql 14 数据库 和 timescaledb 时序库
Linux 上 PostgreSql 14 数据库 和 timescaledb 时序库 数据迁移测试
Linux 上 PostgreSql 14 数据库 和 timescaledb 时序库 数据迁移测试