如何在 CentOS 7 上将 MariaDB 数据目录更改为新位置如何在 CentOS 7 上将 MariaDB 数据目录更改为新位置如何在 CentOS 7 上将 MariaDB 数据目录更改为新位置如何在 CentOS 7 上将 MariaDB 数据目录更改为新位置
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

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

介绍

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

先决条件

要完成本指南,您需要:

  • 具有非根用户的 CentOS 7 服务器,该用户具有 sudo 权限并安装了 MariaDB。您可以在我们的如何在 CentOS 7 上安装 MariaDB 指南中了解更多有关如何设置具有这些权限的用户的信息。

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

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

第 1 步 — 移动 MariaDB 数据目录

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

  1. mysql -u root -p

出现提示时,提供 MariaDB root 密码。然后在 mysql 提示符下,选择数据目录:

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

此输出确认 MariaDB 配置为使用默认数据目录 /var/lib/mysql/, 因此这是我们需要移动的目录。确认后,键入 exit 并按 \ENTER 离开监视器:

  1. exit

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

  1. sudo systemctl stop mariadb

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

  1. sudo systemctl status mariadb

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

Output
. . . Dec 16 18:29:26 mysql systemd[1]: Stopped MariaDB database server.

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

注意:确保目录中没有尾部斜杠,如果您使用制表符完成,可能会添加斜杠。当尾部有斜杠时,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 设置为 /etc/my.cnf 文件中的 /var/lib/mysql。编辑此文件以反映新的数据目录:

  1. sudo vi /etc/my.cnf

找到以 datadir= 开头的行并更改后面的路径以反映新位置。此外,由于套接字之前位于数据目录中,我们需要将其更新到新位置:

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

更新现有行后,我们需要为 mysql 客户端添加配置。在文件底部插入以下设置,这样就不会在 [mysqld] 块和 include 行上方拆分指令:

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

!includedir /etc/my.cnf.d

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

第 3 步 — 重启 MariaDB

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

  1. sudo systemctl start mariadb
  2. sudo systemctl status mariadb

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

  1. mysql -u root -p

再次查看数据目录的值:

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

输入 exit 退出监视器。

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

结论

在本教程中,我们将 MariaDB 的数据目录移动到了一个新位置。虽然我们使用的是块存储设备,但这里的说明应该适用于重新定义数据目录的位置,而不管底层技术如何。

由于 MariaDB 被设计为 MySQL 的直接替代品,您可以从 MySQL 官方文档中的这些部分了解更多关于管理数据目录的信息:

  • MySQL 数据目录
  • 设置多个数据目录

©2015-2025 艾丽卡 support@alaica.com