如何在 CentOS 7 上将 MySQL 数据目录更改到新位置

2023-11-05

介绍

数据库随着时间的推移而增长,有时会超出文件系统上的空间。当它们与操作系统的其余部分位于同一分区时,您也可能会遇到 I/O 争用。 RAID、网络块存储和其他设备可以提供冗余和其他所需的功能。无论您是要添加更多空间、评估优化性能的方法,还是希望利用其他存储功能,本教程都将指导您重新定位 MySQL 的数据目录。

先决条件

要完成本指南,您将需要:

  • 具有非 root 用户的 CentOS 7 服务器sudo权限和MySQL安装。您可以在我们的文章中详细了解如何设置具有这些权限的用户CentOS 7 的初始服务器设置指导。如果您还没有安装 MySQL,如何在 CentOS 7 上安装 MySQL指南可以帮助你。

在此示例中,我们将数据移动到安装在以下位置的块存储设备:/mnt/volume-nyc1-01。您可以了解如何在如何在 DigitalOcean 上使用块存储 guide.

无论您使用什么底层存储,本指南都可以帮助您将数据目录移动到新位置。

第 1 步 — 移动 MySQL 数据目录

为了准备移动 MySQL 的数据目录,让我们通过使用管理凭据启动交互式 MySQL 会话来验证当前位置。

  1. mysql -u root -p

出现提示时,提供 MySQL root 密码。然后从 MySQL 提示符中选择数据目录:

  1. select@@数据目录;
Output
+-----------------+ | @@datadir | +-----------------+ | /var/lib/mysql/ | +-----------------+ 1 row in set (0.00 sec)

此输出确认 MySQL 已配置为使用默认数据目录,/var/lib/mysql/,这就是我们需要移动的目录。确认后,输入exit然后按“ENTER”离开监视器:

  1. exit

为了确保数据的完整性,我们将在实际更改数据目录之前关闭 MySQL:

  1. sudosystemctl 停止 mysqld

systemctl不显示所有服务管理命令的结果,因此如果您想确保已成功,请使用以下命令:

  1. sudosystemctl 状态 mysqld

如果输出的最后一行告诉您服务器已停止,您可以确定它已关闭:

Output
. . . Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

现在服务器已关闭,我们将使用以下命令将现有数据库目录复制到新位置rsync。使用-a标志保留权限和其他目录属性,而-v提供详细输出,以便您可以跟踪进度。

Note:确保目录上没有尾部斜杠,如果使用制表符补全,则可能会添加尾部斜杠。当尾部有斜杠时,rsync会将目录的内容转储到安装点,而不是将其传输到包含的目录中mysql目录:

  1. sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01

一旦rsync完成后,用 .bak 扩展名重命名当前文件夹并保留它,直到我们确认移动成功。通过重新命名,我们将避免新位置和旧位置的文件可能引起的混淆:

  1. sudo mv/var/lib/mysql /var/lib/mysql.bak

现在我们准备将注意力转向配置。

第 2 步 — 指向新数据位置

MySQL 有多种方法来覆盖配置值。默认情况下,datadir被设定为/var/lib/mysql in the /etc/my.cnf 文件。编辑此文件以反映新的数据目录:

  1. sudo vi/etc/my.cnf

找到行中的[mysqld]块开头为datadir=,它与带有多个注释的块标题分开。更改随后的路径以反映新位置。此外,由于套接字之前位于数据目录中,因此我们需要将其更新到新位置:

/etc/my.cnf
[mysqld]
. . .
datadir=/mnt/volume-nyc1-01/mysql
socket=/mnt/volume-nyc1-01/mysql/mysql.sock
. . .

更新现有线路后,我们需要添加配置mysql客户。在文件底部插入以下设置,这样就不会在文件中分割指令[mysqld] block:

/etc/my.cnf
[client]
port=3306
socket=/mnt/volume-nyc1-01/mysql/mysql.sock

完成后,点击ESCAPE,然后输入:wq!保存并退出文件。

第 3 步 — 重新启动 MySQL

现在我们已经更新了配置以使用新位置,我们准备启动 MySQL 并验证我们的工作。

  1. sudosystemctl 启动 mysqld
  2. sudosystemctl 状态 mysqld

为了确保新的数据目录确实在使用中,请启动 MySQL 监视器。

  1. mysql -u root -p

再次查看数据目录的值:

  1. select@@数据目录;
Output
+----------------------------+ | @@datadir | +----------------------------+ | /mnt/volume-nyc1-01/mysql/ | +----------------------------+ 1 row in set (0.01 sec)

现在您已经重新启动 MySQL 并确认它正在使用新位置,请借此机会确保您的数据库功能齐全。一旦验证了任何现有数据的完整性,您可以使用以下命令删除备份数据目录sudo rm -Rf /var/lib/mysql.bak.

结论

在本教程中,我们将 MySQL 的数据目录移动到了新位置,并更新了 SELinux 以适应调整。尽管我们使用的是块存储设备,但无论底层技术如何,此处的说明都应该适合重新定义数据目录的位置。

有关管理 MySQL 数据目录的更多信息,请参阅官方 MySQL 文档中的以下部分:

  • MySQL 数据目录
  • 设置多个数据目录
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 7 上将 MySQL 数据目录更改到新位置 的相关文章

随机推荐

  • Linux 中的剪切命令

    Linux 和 Unix 系统中有许多实用程序可让您处理和过滤文本文件 cut是一个命令行实用程序 允许您从指定文件或管道数据中剪切部分行并将结果打印到标准输出 它可用于按分隔符 字节位置和字符来剪切行的各个部分 在本文中 我们将向您展示如
  • 如何在 Ubuntu 12.04 x64 上安装 iRedMail

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • Spring框架

    Spring 框架是最流行的 Java EE 框架之一 在本文中 我们将了解以下内容 Spring框架架构 Spring的核心组件 spring 框架下的各种项目 我查看了 Spring Framework Servlet JSP 和 JS
  • 如何在 Ubuntu 16.04 上使用 uWSGI 和 Nginx 为 Django 应用程序提供服务

    介绍 Django 是一个功能强大的 Web 框架 可以帮助您启动 Python 应用程序或网站 Django 包含一个简化的开发服务器 用于在本地测试代码 但对于任何与生产稍微相关的事情 都需要更安全 更强大的 Web 服务器 在本指南中
  • ThreadPoolExecutor - Java 线程池示例

    Java线程池管理工作线程池 它包含一个队列 使任务等待执行 我们可以用ThreadPoolExecutor在Java中创建线程池 Java线程池管理Runnable线程的集合 工作线程执行队列中的可运行线程 java util concu
  • 使用 Docker Compose 将 Node.js 应用程序容器化以进行开发

    介绍 如果您正在积极开发应用程序 请使用Docker可以简化您的工作流程以及将应用程序部署到生产的过程 在开发中使用容器可以带来以下好处 环境是一致的 这意味着您可以为项目选择所需的语言和依赖项 而不必担心系统冲突 环境是隔离的 可以更轻松
  • 在 JavaScript 中使用位运算符

    介绍 虽然 Javascript 中的按位运算符几乎没有受到任何关注 但它们实际上非常强大并且用途广泛 它们被认为可以更快地进行数值计算和转换 我们可以利用它们来替代某些复杂的编码场景 并使我们的代码更具可读性 在本教程结束时 您将基本了解
  • 命令设计模式

    命令模式是行为设计 模式之一 命令设计模式用于实现松耦合在请求 响应模型中 命令模式 In command pattern the request is send to the invoker and invoker pass it to
  • 如何在 CentOS 6 上设置 Apache 虚拟主机

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生
  • 如何在 Ubuntu 18.04 上安装 Anaconda [快速入门]

    介绍 Anaconda 专为数据科学和机器学习工作流程而设计 是一款开源包管理器 环境管理器以及 Python 和 R 编程语言的分发版 本教程将指导您在 Ubuntu 18 04 服务器上安装 Anaconda 有关本教程的更详细版本以及
  • 如何在 Ubuntu 14.04 上安装和配置 OSSEC 安全通知

    介绍 您如何跟踪服务器上的授权和未经授权的活动 OSSEC 是一种可以安装在服务器上以跟踪其活动的工具 OSSEC 是一种开源 基于主机的入侵检测系统 HIDS 它执行日志分析 完整性检查 Windows 注册表监控 rootkit 检测
  • 如何在 Ubuntu 22.04 上安装和保护 Grafana

    介绍 Grafana是一种开源数据可视化和监控工具 可与来自以下来源的复杂数据集成普罗米修斯 InfluxDB Graphite and 弹性搜索 Grafana 允许您为数据创建警报 通知和临时过滤器 同时还可以通过内置共享功能更轻松地与
  • 如何在 Ubuntu 12.10 上使用 Nginx 设置 HTTP 身份验证

    什么是Red Means 用户需要输入或自定义的行将位于red在本教程中 其余的大部分应该是可复制和粘贴的 关于 Nginx Nginx 发音为 engine x 是一个 HTTP 和反向代理服务器 以及邮件代理服务器 由 Igor Sys
  • 如何在零停机的情况下将 WordPress 从共享主机迁移到云服务器

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Ubuntu 22.04 上使用 apt 安装 Java

    介绍 许多软件都需要 Java 和 JVM Java 虚拟机 包括Tomcat Jetty 玻璃鱼 卡桑德拉 and Jenkins 在本指南中 您将使用以下命令安装各种版本的 Java 运行时环境 JRE 和 Java 开发人员工具包 J
  • 如何在 Ubuntu 16.04 上使用 GitLab CI 设置持续集成管道

    介绍 GitLab 社区版是一个自托管的 Git 存储库提供商 具有帮助项目管理和软件开发的附加功能 GitLab 提供的最有价值的功能之一是内置的持续集成和交付工具 称为亚搏体育appGitLab持续集成 在本指南中 我们将演示如何设置
  • Linux 中的导出命令

    在本指南中 我们将了解 Linux 中的导出命令 Export 是 Bash shell 的内置命令 它用于标记要传递给子进程的变量和函数 基本上 变量将包含在子进程环境中 而不会影响其他环境 为了更清楚地了解我们正在讨论的内容 让我们深入
  • 如何在 Ubuntu 20.04 上安装 Node.js

    介绍 Node js是用于服务器端编程的 JavaScript 运行时 它允许开发人员使用 JavaScript 创建可扩展的后端功能 这是许多人在基于浏览器的 Web 开发中已经熟悉的语言 在本指南中 我们将向您展示在 Ubuntu 20
  • 如何在 Ubuntu 13.10 上安装 Hadoop

    先决条件 本教程的唯一先决条件是 VPS乌班图 13 10 x64安装 您需要从命令行执行命令 可以通过以下两种方式之一执行 使用 SSH 访问 Droplet 使用 Digital Ocean Droplet 管理面板中的 控制台访问 什
  • 如何在 CentOS 7 上将 MySQL 数据目录更改到新位置

    介绍 数据库随着时间的推移而增长 有时会超出文件系统上的空间 当它们与操作系统的其余部分位于同一分区时 您也可能会遇到 I O 争用 RAID 网络块存储和其他设备可以提供冗余和其他所需的功能 无论您是要添加更多空间 评估优化性能的方法 还