1 背景
服务器没有评估数据量,申请资源时磁盘过小,导致系统运行一段时间后,因为磁盘空间占满,导致mysql宕机。
2 解决方案
2.1 主要解决过程
- 增加磁盘空间
- 关闭使用该目录的所有服务
- 数据目录备份
- 挂载新增加的磁盘,并格式化为ext4格式
- 设置自动挂载
- 文件全量拷贝
- 服务恢复启动
2.2 过程
2.2.1 增加磁盘空间
- 客户在我操作之前已经增加了磁盘空间,此处省略该步骤。
- 查看文件系统信息
lsblk -f
# ● NAME: 块设备的名称。
# ● FSTYPE: 文件系统类型(如果已经格式化)。对于未格式化的设备,此处可能为空白。
# ● LABEL: 文件系统的标签(如果有)。标签是为文件系统指定的一个友好的名称。
# ● UUID: 文件系统的唯一标识符。
# ● MOUNTPOINT: 挂载点,即文件系统被挂载到的位置。如果没有挂载,则显示为空白。
# NAME FSTYPE LABEL UUID MOUNTPOINT
# sda
# ├─sda1 ext4 705fbf61-661f-4b36-a40a-9b6070554063 /boot
# └─sda2 LVM2_member b1EUH9-P5fL-m5N3-HvGE-p3Md-vRE2-cvGuSR
# ├─ao-root xfs 265efc6f-db9e-4123-a921-43fb1fab049b /
# └─ao-swap swap bc9aab27-051e-4f8e-8a0a-f31f39cd1ca8 [SWAP]
# sdb
# └─sdb1 LVM2_member 6uBVm2-S6XG-YfXr-ByQh-bQAD-C4U4-e3UFK2
# └─datavg-datalv
- 此处可以看到,设备名称为 sdb 的就是客户新增加的磁盘,在sdb1分区下有个名为 datavg-datalv 的逻辑卷,因为该磁盘只有我自己用,直接卸载物理卷,并将 sdb1 格式化为 ext4 格式。
sudo pvremove /dev/sdb1
sudo mkfs.ext4 /dev/sdb1
- 执行该命令后,在使用 lsblk -f 查看下文件系统信息,sdb1 变为 ext4 格式。
2.2.2 关闭使用该目录的所有服务
- 用到该目录的只有myql,所以我们执行如下命令,将mysql服务停止。
sudo service mysql stop
2.2.3 数据目录备份
- 将该目录重命名,并重新创建data目录
sudo mv /data /data0422
sudo mkdir /data
2.2.4 挂载新增加的磁盘
sudo mount /dev/sdb1 /data
2.2.5 设置自动挂载
- 编辑/etc/fstab 目录,并将配置增加至文件尾部
vim /etc/fstab
# 配置内容
/dev/sdb1 /data ext4 defaults,noatime 0 0
# 配置内容解释
# 设备:要挂载的设备名称,例如/dev/sdb1。
# 挂载点:要将设备挂载到哪个目录下。
# 文件系统类型:要挂载的文件系统类型,例如ext4。
# 挂载选项:用于控制挂载行为的选项,例如noatime(不更新访问时间)和defaults(使用默认选项)等。
# 挂载次序:系统应该以什么顺序挂载文件系统,例如0表示最先挂载。
2.2.6 文件全量拷贝
- 将 /data 目录的所有文件(包含隐藏文件)全量拷贝到新创建的 /data0422 目录
sudo cp -r /data0422/. /data
2.2.7 设置权限
- /data/mysql 目录需要为 mysql 设置最大权限
2.2.8 服务恢复启动
sudo service mysql start
此文参考了该篇博客内容 https://www.cnblogs.com/xh_Blog/p/17802806.html