当前位置: 首页 > news >正文

Ubuntu挂载HDD迁移存储PostgreSQL数据

关联博客:windows通用网线连接ubuntu实现ssh登录、桌面控制、文件共享

背景:

在个人ubuntu机器上安装了pgsql,新建了一张表插入了2000w+数据用于模拟大批量数据分页查询用,但是发现查询也不慢(在公司测试环境查询1700w+总数需要16s左右),由于当前pgsql数据默认安装在SSD中,怀疑由于SSD的读取速度较高,体现不出查询慢,于是计划挂载一张机械硬盘,将pg数据迁移至机械盘,验证查询是否会变慢

请添加图片描述

实践:

1、挂载HDD

1-1、ubuntu界面操作

准备一张空闲的HDD硬盘,连接至ubuntu(本文使用一张1T的希捷HDD)
请添加图片描述

格式化,卷名设置为HDD
请添加图片描述
设置完后为未挂载状态
请添加图片描述

由于在界面上挂载,默认会将HDD挂载到/media目录下,所以下面执行指令

1-2、查看未挂载的磁盘,从大到小排序

可以看第一个为我们需要挂载的磁盘,LABELHDDUUID7639aea6-7668-4bc3-ae22-b48c96377e8f

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID | grep -v " /" | sort -hrk2
sda         931.5G ext4                                         HDD      7639aea6-7668-4bc3-ae22-b48c96377e8f
nvme0n1     931.5G                                                       
└─nvme0n1p3 609.2G ntfs                                         material 6CB69233B691FDB0
 

1-2、创建挂载点目录

sudo mkdir -p /mnt/pgdata

1-3、执行挂载

此文演示基于LABEL进行挂载,-L后面 填写标签
临时挂载测试

sudo mount -L HDD /mnt/pgdata

检查挂载状态

df -h /mnt/pgdata
文件系统        大小  已用  可用 已用% 挂载点
/dev/sda        916G   28K  870G    1% /mnt/pgdata

设置永久挂载(编辑/etc/fstab)

sudo nano /etc/fstab
## 添加配置
LABEL=HDD /mnt/pgdata ext4 defaults,nofail 0 2

验证fstab配置

# 没有错误消息,表示配置正确
sudo mount -a

设置权限

sudo chown -R postgres:postgres /mnt/pgdata
sudo chmod 700 /mnt/pgdata

2、迁移PG数据

2-1、停止pg服务

sudo systemctl stop postgresql

2-2、迁移存量数据

查看当前pgsql的数据目录

grep data_directory /etc/postgresql/*/main/postgresql.conf
data_directory = '/var/lib/postgresql/15/main'          # use data in another directory

移动数据至刚才挂载的目录【需要等待一定时间,具体看需要转移多少存量数据】

sudo mv /var/lib/postgresql/15/main /mnt/pgdata

2-3、修改配置&确认修改

修改postgresql.conf

sudo nano /etc/postgresql/15/main/postgresql.conf
data_directory = '/mnt/pgdata/main'          # use data in another directory

重启pgsql

sudo systemctl start postgresql

检查数据目录是否修改

sudo systemctl status postgresql
sudo -u postgres psql
postgres=# SHOW data_directory;
  data_directory  
------------------
 /mnt/pgdata/main
(1 row)

3、问题汇总

3-1、执行迁移指令后,HDD磁盘容量没有变化

执行sudo mv /var/lib/postgresql/15/main /mnt/pgdata前,请确认需要HDD挂载的目录是否为/mnt/pgdata,博主先前设置HDD挂载目录为/mnt/pgdata,但是迁移时执行sudo mv /var/lib/postgresql/15/main /mnt/pg_data,多了下划线,导致实际没有迁移成功。

3-2、登录pgsql提示:连接到套接字"/var/run/postgresql/.s.PGSQL.5432"上的服务器失败:没有那个文件或目录

关注postgresql.conf配置中的data_directory与当前pgsql的实际数据目录地址是否一致。博主执行sudo mv /var/lib/postgresql/15/main /mnt/pgdata指令后,pg数据实际上迁移至了/mnt/pgdata/main中,一开始postgresql.conf设置data_directory/mnt/pgdata,出现了这个问题,调整成/mnt/pgdata/main后解决

验证:

在挂载HDD和pg数据迁移过后,再次执行

SELECT COUNT(*) FROM t_common_work_order_log;

首次查询很慢,约20分钟,用SSD的话首次查询约为16s
请添加图片描述
但是后续查询就比较快了,插入了新数据后再次查询也很快,甚至先前比用SSD还快😳
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/114336.html

相关文章:

  • 哈尔滨工业大学:大模型时代的具身智能
  • [ctfshow web入门] web2
  • Error in v-on handler: “TypeError: handler.apply is not a function“
  • 支持selenium的chrome driver更新到135.0.7049.42
  • 智能测试用例生成:分块实现大模型完整回答的最佳策略
  • Python作业1 if __name__==‘__main__‘
  • Spring Boot整合MyBatis-Plus实现CRUD操作教程
  • 【CMake】《CMake构建实战:项目开发卷》笔记-Chapter10-策略与向后兼容
  • C++信号与槽机制自实现
  • win10 笔记本电脑安装 pytorch+cuda+gpu 大模型开发环境过程记录
  • git push
  • 蓝桥杯单片机频率
  • YOLO环境搭建,win11+wsl2+ubuntu24+cuda12.6+idea
  • C# Winform 入门(9)之如何封装并调用dll
  • 如何提高rabbitmq消费效率
  • C#中为自定义控件设置工具箱图标
  • OpenRouter - 创建 API Keys、OpenAI 调用 以及在Cline 中配置使用
  • 连续数据离散化与逆离散化策略
  • 学习笔记—C++—入门基础()
  • Qt之QHostInfo
  • 嵌入式AI的本地化部署的好处
  • 【51单片机】2-6【I/O口】【电动车简易防盗报警器实现】
  • 蓝桥云客--浓缩咖啡液
  • 前端精度计算:Decimal.js 基本用法与详解
  • VUE3组件综合应用(日历组件)
  • 8.5/Q1,Charls最新文章解读
  • stc8g1k08a定时读取内部1.2v电压值 vcc电压发送到串口1
  • pycharm 有智能提示,但是没法自动导包,也就是alt+enter无效果
  • JavaScript基础--03-变量的数据类型:基本数据类型和引用数据类型
  • 2025大唐杯仿真3——移动性管理