安装ThingsBoard时,采用了postgres数据库的默认配置,经过几个月运行,数据库的存储目录满了,准备将该数据库迁移到D盘,方便扩容和备份。网上资料鱼龙混杂,记录下迁移过程。
需求说明
- 服务器是windows操作系统。
- 只迁移单个数据库(thingsboard)的存储目录,不是更改postgres的数据目录。
- 用界面的方式进行,不想用命令行。
基础知识
postgres数据库的结构的知识:
- postgres有
集群(Cluster)概念(如图中PostgreSQL 17)。它包含一个共享的系统目录(pg_global)、多个用户数据库、一套共享的后台进程。
一个 PostgreSQL 实例 ↓ 一个数据库集群(Database Cluster) ↓ 多个数据库(Databases) ↓ 多个表空间(Tablespaces)[可选]↓ 表/索引等对象- 数据存储目录的名词叫
表空间 Tablespaces,每个数据库挂在一个表空间上。 - 定时任务并不属于某个数据库,是单独的。
操作步骤
- 新建一个表空间,命名为
tb_space,存储位置为D:\database\data。
- 保存时会提示
无法为目录 "C:/database/data" 的设置权限,在资源管理器中右键-属性-安全,添加完全属性。
- 右键
thingboard数据库,将其表空间由默认的pg_default更改为tb_space,确定后,该数据库的目录以及已有的数据都会全部转移到新目录中来,原来的目录也会被删掉。
注意事项
- 定时任务并不包含在数据库中,备份数据库,记得将定时任务单独备份。
- 数据库如果太大,更改表空间时可以先将原目录备份。