☰
【Linux】Rocky 9.8 操作系统磁盘分区与MySQL数据目录迁移
2026/10/3 11:45:46 网站建设 项目流程

一、Rocky常用命令

序号

命令

描述

1

cat /etc/rocky-release

查看Rocky系统版本

2

uname -r

查看内核版本

3

lsblk

查看硬盘、分区、挂载点多大【不显示磁盘已用多少、剩余多少】

4

df -h

看容量、已用、剩余、使用率、挂载点

5

fdisk -l

识别物理硬盘【硬件分区层面】

6

mkdir -p

自动创建中间不存在的父级目录

7

chown -R

递归修改文件/目录的属主(所有者)以及属组

8

vim

文本编辑器(vi的增强版本)

9

pwd

显示当前所在目录

10

ls

列出当前目录文件

11

rm

删除

12

rm -rf

递归删除

13

cp

复制

14

mv

移动/重命名

15

cat

查看文件内容

16

ps aux

查看所有进程

17

kill [PID]

杀掉进程

18

kill -9 [PID]

强制杀掉进程

19

systemctl start 服务

启动服务

20

systemctl stop 服务

停止服务

20

systemctl restart 服务

重启服务

22

systemctl status 服务

查看服务状态

23

systemctl enable 服务

开启开机自启

24

systemctl disable 服务

关闭开机自启

二、系统磁盘分区规则

2.1 安装默认自动分区(LVM)策略

Rocky9 安装界面【选择自动分区 (LVM)时】默认分配原则:

1、磁盘剩余空间小于 70G,Rocky9基本会把所有空间给根,Rocky10会以及安装器算法划分空间;

2、如果磁盘总空间大于等于 70G:根目录/最大分配70G,磁盘剩下全部剩余空间分配给rl‑home逻辑卷。

安装的时候可以将空间都给根,也可以分区。分区的好处是防止日志等程序意外将根打满导致系统崩溃。

2.2 各挂载点说明

devtmpfs:内存文件系统,提供设备节点,存放在内存,不占用硬盘

/dev/shm:共享内存,程序可以使用这块内存做高速共享;重启数据全部消失

/run:存放运行时进程 pid、socket,内存,重启清空

efivarfs:变量虚拟文件,用于 UEFI 固件,很小,不用关注磁盘使用率

rl‑root:根分区 / ;操作系统、/var、/etc默认全部在这里

/boot:约 1G,xfs,存放内核、initramfs启动镜像

/boot/efi:约 600M,EFI 系统分区

rl‑home:用户数据目录,自动分区时存放大量剩余磁盘空间

tmpfs:用户会话临时内存文件系统;user/0:root 登录会话

三、MySQL数据目录迁移至/home盘

业务场景:根分区空间紧张,MySQL 默认数据目录/var/lib/mysql占用大量磁盘,需要迁移至大空间的 /home 目录。

步骤1:查看磁盘空间:df -h

步骤2:停止MySQL服务并检查是否有残留进程

停止服务:systemctl stop mysqld

查看进程:ps -ef |grep mysqld

步骤3:在/home目录下创建mysql数据目录

mkdir -p /home/mysql/data

步骤4:拷贝全部原有数据库文件(rsync 保留权限属性)

使用 rsync 比 cp 更适合迁移,完整保留文件权限、属主属组、selinux 标签属性,避免权限异常。

rsync -av /var/lib/mysql/ /home/mysql/data/

步骤5:修改目录属主属组

MySQL 进程默认运行用户是 mysql,不是 root,目录必须归属 mysql 用户,否则启动报错。

chown -R mysql:mysql /home/mysql/data

步骤6:SELinux 安全上下文配置(Rocky9 默认开启 SELinux)

Rocky默认开启 SELinux(强制安全防护机制,管进程能访问哪些文件),SELinux 还是会阻止 mysqld 读写 /home/mysql/data,mysql 启动直接失败(不要关闭 SELinux,修改永久策略)。

安装selinux工具:dnf install -y policycoreutils-python-utils

修改 SELinux 永久上下文规则(写进策略库,不是临时改):

semanage fcontext -a -t mysqld_db_t "/home/mysql/data(/.*)?"

应用策略,递归刷新目录

restorecon -Rv /home/mysql/data

步骤7:修改MySQL配置文件

编辑配置文件:vim/etc/my.cnf

修改 [mysqld] 段

[mysqld]

datadir=/home/mysql/data

socket=/var/lib/mysql/mysql.sock

“socket”不要修改默认路径,它是本机 mysql 客户端和 mysql 服务之间通信的 “本地管道文件”,不走 3306 端口

步骤8:检查 systemd 服务沙箱 ProtectHome 参数

Rocky9 的 mysqld.service 存在沙箱隔离配置ProtectHome=true,开启后会屏蔽访问/home、/root目录,导致 MySQL 启动失败。

查看服务单元文件:systemctl cat mysqld

如果看到 ProtectHome=true,就执行 systemctl edit mysqld 添加关闭;【ProtectHome=true(systemd 沙箱隔离),systemd 启动 mysqld 的时候,直接隔离屏蔽掉/home、/root、/run/user目录】

如果没有这一行,则不需要修改 service,跳过该步骤。

步骤9:重载 systemd,启动 mysql服务

【判断】如果修改了service 覆盖配置之后必须执行:systemctl daemonreload

启动mysql:systemctl start mysqld

查看mysql状态:systemctl status mysqld

步骤10:启动成功后登录验证结果

mysql -uroot -p

show variables like '%datadir%';

确认 datadir 指向 /home/mysql/data 之后,先跑一会测试业务,确认数据没问题再去删除之前的随数据库。

也可进一步查看数据库列表:show databases;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询