1. 首页
  2. Linux

在 Debian12 系统上修改 MySQL 数据库文件的位置

一、停止 MySQL 服务

首先,必须停止 MySQL 服务以确保数据文件在移动过程中不会被访问或修改。

sudo systemctl stop mysql

二、创建新目录

创建一个新的目录来存储 MySQL 数据文件。例如

mkdir -p /new/mysql/data

三、设置权限

确保 MySQL 用户具有对新目录的适当权限。通常,MySQL 用户是 mysql。

sudo chown -R mysql:mysql /new/mysql/data 
sudo chmod 750 /new/mysql/data

四、复制数据文件

将现有的数据文件(一般位于/var/lib/mysql/)复制到新目录。可以使用 rsync 来确保所有权和权限得到保留。

sudo rsync -av /var/lib/mysql/ /new/mysql/data/

如果 rsync 命令不存在,则安装

apt install -y rsync 

五、修改 MySQL 配置文件

编辑 MySQL 的配置文件(通常是 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),找到 datadir 配置项,并将其更新为新的数据目录。

如果没有 datadir 配置项,则需要在 mysqld 下手动添加

[mysqld]

datadir=/new/mysql/data

找到并修改 datadir 行

datadir = /new/mysql/data

六、更新 AppArmor 配置(如果适用)

如果系统使用 AppArmor,则需要更新其配置以允许 MySQL 访问新目录。编辑 /etc/apparmor.d/usr.sbin.mysqld 文件,添加新数据目录路径。

# 使用cat命令判断该文件是否存在
cat /etc/apparmor.d/usr.sbin.mysqld

# 如果存在则编辑
vim /etc/apparmor.d/usr.sbin.mysqld

添加以下行:

plaintext
/new/mysql/data/ r,
/new/mysql/data/** rwk,

然后重新加载 AppArmor 配置:

sudo systemctl reload apparmor

七、启动 MySQL 服务

启动 MySQL 服务并验证其是否正常运行。

sudo systemctl start mysql

八、验证更改

检查 MySQL 是否正常运行,并确认数据目录已更改。可以通过查看 MySQL 的状态或日志文件来验证。

sudo systemctl status mysql

或查看 MySQL 日志(通常位于 /var/log/mysql/error.log)。

九、清理旧数据目录

确认一切正常后,可以删除旧的数据目录以释放空间。

sudo rm -rf /var/lib/mysql/

通过这些步骤,你可以将 MySQL 数据文件移动到新的位置。在此过程中,确保所有操作都备份好数据,以防出现任何问题。


TOP