dbpystream webapi: 一次clickhouse数据从系统盘迁至数据盘的尝试

dbpystream是个人部署在阿里云的一个开源项目。

前面介绍了,尽管阿里云站点的变更(从福州节点至上海节点),但在操作,总体上简单方便快捷。

因为个人的原因,项目当初还遗留了一个问题,就是最初在部署dbpystream服务端时,clickhouse数据库直接部署在系统盘了。以下可以参考:

css 复制代码
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.5G  1.1M  1.5G   1% /run
/dev/vda3       492G  380G   93G  81% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda2       197M  6.1M  191M   4% /boot/efi
tmpfs           1.5G  4.0K  1.5G   1% /run/user/1000

上面可以看出,clickhouse的数据堆在系统盘上,未来扩展的空间有限。

因为当初clickhouse压缩率比较高,短期省钱省事,就没有加数据盘。随着空间越来越小,把clickhouse的数据迁至专门数据盘上,增加可扩展性,就变成了一项紧迫的任务。

当然,在加载数据盘的前提是,必须先行购买数据云盘。下面,就是如何把数据盘挂载上,以及把clickhouse的数据从现有的系统盘迁移到数据盘上的事情了。

一、加载新的数据盘

假定,我们这次计划把数据盘挂载在/home/data下:

1、进行一次性挂载

以下拟把数据盘挂载在/home/data目录上,下同。

(1)查看相关信息,找到相应的数据盘:

数据盘一般是/dev/vdb或/dev/xvdb;这里假定是前者:/dev/vdb。具体操作可以有:

查看系统盘和数据盘信息:

css 复制代码
 sudo fdisk -l 

查看系统盘和数据盘挂载的信息:

css 复制代码
df -h

查看系统盘和数据盘信息:

css 复制代码
lsblk

(2) 确认根据需要,是否要对/dev/vdb是否要进行分区,也可以不进行分区。

2.1 若需要分区,操作如下:

css 复制代码
 fdisk /dev/vdb
 依次输入 n,p,1, 回车,回车, wq

2.2 若不需要分区,操作如下:

假定数据盘是/dev/vdb(即不分区的情况,下同;分区往往可能是/dev/vdb1)的情况,执行格式化:

css 复制代码
mkfs.ext4 /dev/vdb

(3)创建确定数据盘挂载的地址

一般比如是/mnt/data;/home/data;/data等;这个可以根据自身的需要来设定。

复制代码
sudo mkdir /home/data

(4)对/home/data进行数据盘挂载:

复制代码
 sudo mount /dev/vdb /home/data

查看一下挂载是否成功:

css 复制代码
 df -h

2、进行自动挂载配置:

上面只是进行了把一次性挂载的配置。但是一旦重新启动,这些配置就失效了,因此需要考虑,把上面的一次性转化为持久性的配置。因此,这步一定不能省。

(1)查找挂载好的数据盘的UUID信息:

通过下面的操作,我们可以获得UUID信息是:45e31162-c32a-4654-92ad-92167126ade1,这个信息会根据个人各自的系统有所不同。

css 复制代码
sudo lsblk -f

可以看到,在/dev/vdb/目录下有相关信息:

(2)将挂载信息写入/etc/fstab:

第一步:进入/etc/fstab文件:

css 复制代码
sudo vim /etc/fstab

vim常用的操作有:

复制代码
- [Esc] 键退出插入模式
- [i]   键进入插入模式
- [:wq!] 退出保存

第二步:修改配置文件(挂载点为/home/data):

css 复制代码
   UUID=45e31162-c32a-4654-92ad-92167126ade1 /home/data ext4 defaults 0 1

保存退出,即可。

(3)自动挂载验证环节。

提醒:这步不能省,你必须对挂载操作进行验证。

第一、重启系统(这个环节是必要的)

css 复制代码
sudo reboot

第二、 查看挂载是否成功:

css 复制代码
df -h

二、clickhouse的数据迁移

提醒一下:在数据迁移前,务必请做好数据备份。

可以看出,clickhouse的数据在系统盘上已经占了80%,尽管按目前的进度,支撑1年没有问题,但是到了必须要进行调整的时侯了。

因为我们已经购买了新的数据盘,并挂载在/home/data下。那么,我们原来clickhouse原来的数据存放在地址进行变更即可。即目标如下:

css 复制代码
/var/lib/clickhouse ->/home/data/clickhouse

在linux平台下,ClickHouse的配置文件通常位于/etc/clickhouse-server/目录下,ClickHouse的数据默认存储在/var/lib/clickhouse/。

在操作前,可以看看clickhouse的原有信息:

css 复制代码
df -h /var/lib/clickhouse

在完成相关了解后,主要具体操作如下:

1、停止当前的clickhouse服务

css 复制代码
 sudo systemctl stop clickhouse-server

2、进行clickhouse数据迁移

针对[原target:/var/lib/clickhouse/]->[/home/data/clickhouse],进行以下操作:

css 复制代码
   mv /var/lib/clickhouse/* /home/data/clickhouse

这个数据迁移需要一定的时间,几十分钟到几个小时不等,都可能,甚至更长。但你可以新开一个终端来查看数据的迁移情况。

通过df -h查看,可以看到:

css 复制代码
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.5G  1.1M  1.5G   1% /run
/dev/vda3       492G   16G  456G   4% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda2       197M  6.1M  191M   4% /boot/efi
/dev/vdb        984G  365G  569G  40% /home/data
tmpfs           1.5G  4.0K  1.5G   1% /run/user/1000

可以看到,/dev/vda3上面的数据已经大大释放了;同步,/dev/vdb上的空间已经被同步占用了。

3、增加新目录权限:

css 复制代码
   chown -R clickhouse:clickhouse /home/data/clickhouse

注意,上面不要写错了,其中":"写成了"."。

4、对新目录文件夹建立软链接

通软链接,把/var/lib/clickhouse指向/home/data/clickhouse,系统能自动寻址到新的地方。

css 复制代码
  ln -s /home/data/clickhouse /var/lib/

为什么不是/var/lib/clickhouse?已经没有clickhouse目录了。

5、检查新建立的软键接

css 复制代码
 ls -l /var/lib/

6、重启clickhouse服务

复制代码
 sudo systemctl restart clickhouse-server

7、对相关的服务进行验证:包括客户端验证和服务端验证。

重启服务端的程序后,经过客户端调用和后台数据读写的验证,若服务一切正常,表明迁移工作完成。

相关推荐
Lisonseekpan4 小时前
为什么要避免使用 `SELECT *`?
java·数据库·后端·sql·mysql·oracle
lecepin5 小时前
AI Coding 资讯 2025-10-29
前端·后端·面试
Tony Bai5 小时前
【Go模块构建与依赖管理】01 前世今生:从 GOPATH 的“混乱”到 Go Modules 的“秩序”
开发语言·后端·golang
Python私教5 小时前
从零构建 Swing 计算器:深入理解 Java GUI 开发核心机制
后端
菜鸟的迷茫5 小时前
线程池中的坑:线程数配置不当导致任务堆积与拒绝策略失效
java·后端
Moonbit5 小时前
MoonBit Pearls Vol.13:初探 MoonBit 中的 JavaScript 交互
javascript·后端
没逻辑5 小时前
高性能计算的利器:Rust中的SIMD实战指南
后端·rust
bcbnb5 小时前
iOS 26 描述文件管理与开发环境配置 多工具协作的实战指南
后端
Python私教5 小时前
Swing 快速入门指南:零依赖构建 Java 桌面应用
后端