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

如何在 CentOS / RHEL 上修改 MySQL 默认数据目录 ?

Changing the Default MySQL Data Directory

MySQL 是一个广泛使用的开源关系数据库管理系统(RDBMS),为无数的 web 应用程序和服务提供支持。默认情况下,MySQL 将其数据存储在预定义的目录中,这可能并不总是适合您的需求。您可能希望将数据目录移动到另一个位置以获得更好的性能和安全性,或者利用单独的磁盘或分区。

在本指南中,我们将引导您完成在 Linux 系统上更改默认 MySQL 数据目录的过程,确保以最小的停机时间顺利过渡。

Step 1: 准备新的数据目录

第一步是创建一个新目录,用于存储 MySQL 数据,确保新位置有足够的存储空间以满足当前和未来的数据要求,用您所需的路径替换 /new/mysql/data 路径。

sudo mkdir -p /new/mysql/data

接下来,设置新目录的所有权和权限,以匹配默认 MySQL 数据目录的所有权和权限。

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

Step 2: 停止 MySQL 服务

在更改 MySQL 配置之前,必须先停止 MySQL 服务,以避免数据损坏或丢失。

sudo systemctl stop mysqld

Step 3: 将现有数据复制到新目录

MySQL 服务停止后,可以安全地将现有数据复制到新目录中。需要保留文件的权限和所有权。

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

如果原有数据目录有所不同,则将 /var/lib/mysql 替换为当前的 MySQL 数据目录路径。

Step 4: 更新 MySQL 配置

要通知 MySQL 新数据目录,您必须更新配置文件,打开 MySQL 配置文件。

sudo nano /etc/my.cnf

更新 datadir 和 socket 选项以指向新目录

[mysqld]
datadir=/new/mysql/data
socket=/new/mysql/data/mysql.sock

如果这些选项不存在,将它们添加到 [mysqld] 部分,保存并关闭配置文件。

Step 5: 更新 systemd 配置 (可选)

如果您的系统使用 systemd 来管理 MySQL 服务,则可能需要更新 systemd 配置以反映新数据目录。打开

MySQL systemd 服务文件,通常位于 /usr/lib/systemd/system/mysqld.service

/lib/systemd/system/mysql.service

sudo nano /usr/lib/systemd/system/mysqld.service

找到 ExecStart 行并添加 --datadir--socket 选项

ExecStart=/usr/sbin/mysqld --datadir=/new/mysql/data --socket=/new/mysql/data/mysql.sock

保存并关闭该文件,重新加载 systemd 配置。

sudo systemctl daemon-reload

Step 6: 更新 MySQL 客户端配置

为了确保 MySQL 客户端可以使用新的 socket 文件,需要更新客户端配置。

sudo nano /etc/my.cnf

找到 [client] 部分并更 socket 选项以指向新目录

[client]
socket=/new/mysql/data/mysql.sock

如果 socket 选项不存在,将其添加到 [client] 部分。保存并关闭配置文件。

Step 7: 重启 MySQL 服务

重启 MySQL 服务,使更改生效。

sudo systemctl start mysqld

Step 8: 验证更改

查看 mysql 服务状态

sudo systemctl status mysqld

此外,您可以使用客户端连接到 MySQL 服务器,并验证是否正在使用新的数据目录

mysql -u root -p -e 'SHOW VARIABLES WHERE Variable_Name = "datadir";'

Step 9: 删除或备份旧数据目录 (可选)

一旦确认 MySQL 正在使用新的数据目录并且一切正常,可以执行以下操作:

删除旧数据目录

sudo rm -rf /var/lib/mysql

或者,创建数据备份

sudo mv /var/lib/mysql /var/lib/mysql_backup

我的开源项目

酷瓜云课堂-开源知识付费解决方案

  • course-tencent-cloud(酷瓜云课堂 - gitee仓库)
  • course-tencent-cloud(酷瓜云课堂 - github仓库)

相关文章:

  • 【从零开始学习QT】Qt 概述
  • mysql prepare statement
  • Flink 状态管理深度解析:类型与后端的全面探索
  • DrissionPage:重新定义Python网页自动化,让爬虫与浏览器控制合二为一
  • Spring AI Alibaba 发布企业级 MCP 分布式部署方案
  • day12 leetcode-hot100-19(矩阵2)
  • 中山大学无人机具身导航新突破!FlightGPT:迈向通用性和可解释性的无人机视觉语言导航
  • ICDMC 2025:创新媒体模式,迎接数字时代的挑战
  • SpringBoot+tabula+pdfbox解析pdf中的段落和表格数据
  • 算力卡上部署OCR文本识别服务与测试
  • 基于深度学习的工业OCR实践:仪器仪表数字识别技术详解
  • Tesseract OCR 安装与中文+英文识别实现
  • c++设计模式-单例模式
  • 【Microsoft 365可用】PPT一键取消所有超链接
  • 私有化部署DeepSeek后行业数据模型的训练步骤
  • “顶点着色器”和“片元着色器”是先处理完所有顶点再统一进入片元阶段,还是一个顶点处理完就去跑它的片元?
  • 说说线程有几种创建方式
  • 嵌入式自学第三十天(5.28)
  • 运维三剑客——sed
  • ArcGIS Pro裁剪影像
  • 济南市建设工程招标投标协会网站/专业网站建设
  • 网站商品展示设计/网站出租三级域名费用
  • 电子商务网站开发公司/优化大师有必要安装吗
  • 扩展名 网站/玄幻小说百度风云榜
  • 关于做展厅的网站/app软件开发制作公司
  • 做转运网站/浙江网络科技有限公司