Linux系统 磁盘满了,想要把TDengine 数据存储迁移到 /home 目录,确认下按照如下操作步骤是否可以

【TDengine 使用环境】
生产环境

【TDengine 版本】

3.0.2.0

【操作系统以及版本】

centos 7 Linux

【部署方式】容器/非容器部署

非容器

【集群节点数】

0

【集群副本数】

0

【描述业务影响】

【问题复现路径/shan】做过哪些操作出现的问题

【遇到的问题:问题现象及影响】

要将 TDengine 数据存储迁移到 /home目录下,请按以下步骤操作。请务必在执行前停止服务并备份重要数据。

第一步:停止 TDengine 服务

停止 TDengine 服务

sudo systemctl stop taosd taosadapter

第二步:创建新的数据目录

创建新的数据存储目录,例如 /home/tdengine/data

sudo mkdir -p /home/tdengine/data

创建新的日志目录

sudo mkdir -p /home/tdengine/log

设置正确的所有权(让 taosd 用户拥有该目录)

sudo chown -R taosd:taosd /home/tdengine

设置适当的权限

sudo chmod 755 /home/tdengine
sudo chmod 700 /home/tdengine/data
sudo chmod 700 /home/tdengine/log

第三步:修改配置文件
编辑 TDengine 配置文件 /etc/taos/taos.cfg:
sudo nano /etc/taos/taos.cfg
找到并修改以下两行(如果不存在则添加):

第一数据目录

dataDir /home/tdengine/data

第一日志目录

logDir /home/tdengine/log
保存并退出。

第四步:迁移现有数据(重要!)
如果这是新安装,可跳过此步。如果要保留历史数据,必须执行:

停止服务后,复制原数据到新位置

sudo cp -a /var/lib/taos/data/* /home/tdengine/data/
sudo cp -a /var/log/taos/* /home/tdengine/log/

确认复制完成后,可备份原目录(可选)

sudo mv /var/lib/taos /var/lib/taos.backup
sudo mv /var/log/taos /var/log/taos.backup
第五步:更新符号链接(如果使用)
由于安装脚本创建了符号链接,也需要更新:

删除旧的符号链接

sudo rm -f /usr/local/taos/data
sudo rm -f /usr/local/taos/log

创建新的符号链接

sudo ln -sf /home/tdengine/data /usr/local/taos/data
sudo ln -sf /home/tdengine/log /usr/local/taos/log

第六步:修改 systemd 服务文件(如有必要)
检查服务文件是否硬编码了数据路径:

查看 taosd 服务文件

sudo systemctl cat taosd | grep -i “data\|log”
如果服务文件中有 --dataDir或 --logDir参数,需要修改 /etc/systemd/system/taosd.service文件,移除或更新这些参数。通常只需修改 taos.cfg即可。

第七步:重新启动服务

重新加载 systemd 配置

sudo systemctl daemon-reload

启动服务

sudo systemctl start taosd
sudo systemctl start taosadapter

检查服务状态

sudo systemctl status taosd

第八步:验证配置
连接 TDengine 并验证新路径:

连接 TDengine

taos

执行SQL命令查看数据目录

SHOW DNODES;
在返回结果中,查看 data_dir列,应显示为新路径 /home/tdengine/data。

第九步:清理旧数据(谨慎操作)
确认新位置运行正常后,可删除备份的旧数据:

确认新服务运行正常后

sudo rm -rf /var/lib/taos.backup
sudo rm -rf /var/log/taos.backup
关键注意事项
磁盘空间:确保 /home分区有足够空间存储时序数据
权限问题:必须确保 taosd:taosd用户对 /home/tdengine目录有完全访问权限
集群环境:在集群中,每个节点都需要执行相同的路径修改
SELinux/AppArmor:如果系统启用了安全模块,可能需要调整策略:

对于 SELinux(如 CentOS/RHEL)

sudo semanage fcontext -a -t taosd_data_t “/home/tdengine/data(/.*)?”
sudo restorecon -Rv /home/tdengine

对于 AppArmor(如 Ubuntu)

可能需要编辑 /etc/apparmor.d/usr.bin.taosd

备份配置:修改前备份配置文件:
sudo cp /etc/taos/taos.cfg /etc/taos/taos.cfg.backup

【资源配置】

【报错完整截图】(不要大段的粘贴报错代码,论坛直接看报错代码不直观)

1、整个步骤没有问题。只是 sudo cp -a /var/lib/taos/data/* /home/tdengine/data/
原来的缺省目录是 /var/lib/taos/ ,应该是没有 data 这层文件夹的,请确认一下。
2、log 目录不用拷贝了,修改了配置logDir 就可以了。
3、后面的软链接也可以不用做。

1、确实没有 data 这层文件夹 那改成 sudo cp -a /var/lib/taos/* /home/tdengine/data/ 这样可以吗?
2、sudo cp -a /var/log/taos/* /home/tdengine/log/ 这步可以不用对吧?

3、软连接:下面两个删除和创建 也不用对吧?

删除旧的符号链接
sudo rm -f /usr/local/taos/data
sudo rm -f /usr/local/taos/log

创建新的符号链接

sudo ln -sf /home/tdengine/data /usr/local/taos/data
sudo ln -sf /home/tdengine/log /usr/local/taos/log

是的,这样就行 。