ThingsBoard - 更改数据库存储目录

安装ThingsBoard时,采用了postgres数据库的默认配置,经过几个月运行,数据库的存储目录满了,准备将该数据库迁移到D盘,方便扩容和备份。网上资料鱼龙混杂,记录下迁移过程。

需求说明

  1. 服务器是windows操作系统。
  2. 只迁移单个数据库(thingsboard)的存储目录,不是更改postgres的数据目录。
  3. 用界面的方式进行,不想用命令行。

基础知识

postgres数据库的结构的知识:

  1. postgres有集群(Cluster)概念(如图中PostgreSQL 17)。它包含一个共享的系统目录(pg_global)、多个用户数据库、一套共享的后台进程。
bash 复制代码
一个 PostgreSQL 实例
    ↓
一个数据库集群(Database Cluster)
    ↓
多个数据库(Databases)
    ↓
多个表空间(Tablespaces)[可选]
    ↓
表/索引等对象
  1. 数据存储目录的名词叫表空间 Tablespaces,每个数据库挂在一个表空间上。
  2. 定时任务并不属于某个数据库,是单独的。

操作步骤

  1. 新建一个表空间,命名为tb_space,存储位置为E:\DataBase\Data
  1. 保存时会提示无法为目录 "C:/database/data" 的设置权限,在资源管理器中右键-属性-安全,添加完全属性。
  1. 右键thingboard数据库,将其表空间由默认的pg_default更改为tb_space,确定后,该数据库的目录以及已有的数据都会全部转移到新目录中来,原来的目录也会被删掉。我的数据库有50G,大致花费了5分钟。
  1. 进入E:\DataBase\Data,可见创建了诸多文件,大小也是53.4G,说明数据库已经转移过来了。

注意事项

  1. 定时任务并不包含在数据库中,备份数据库,记得将定时任务单独备份。
  2. 数据库如果太大,更改表空间时可以先将原目录备份。
相关推荐
z落落16 分钟前
SQL 表的基本操作 数据库增删改查(CRUD)+SQL 进阶语法详解(标识列插入、模糊查询、Union、变量、运算、别名)
数据库·sql
代码的小搬运工3 小时前
网络请求(NSURL、NSURLRequest、NSURLSessionDataTask、协议回调与 JSON 数据的基本流向)
网络·数据库·json
Cx330❀9 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
c238569 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
我科绝伦(Huanhuan Zhou)10 小时前
MySQL极端场景数据丢失防护:从Crash-Safe到异地备份
数据库·mysql
辞旧 lekkk10 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
明志数科10 小时前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒10 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪10 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
Navicat中国11 小时前
开发者入门:无服务器数据库
数据库·云原生·serverless·navicat