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

介绍

数据库随着时间的推移而增长,有时超过了文件系统的空间。当它们与操作系统的其他部分相同分区时,您也可以遇到 I/O 争议。RAID、网络区块存储和其他设备可以提供冗余和其他可取的功能。无论您是添加更多的空间、评估优化性能的方法,还是寻求利用其他存储功能,本教程将引导您迁移 MariaDB 的数据目录。

前提条件

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

***一个 CentOS 7 服务器具有非根用户的)指南中了解有关如何设置具有这些特权的用户的更多信息。 如果您尚未安装 MariaDB,则 如何在 CentOS 7 上安装 MariaDB指南可以帮助您。

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

无论您使用什么基础存储,本指南可以帮助您将数据目录移动到一个新的位置。

步骤 1 – 移动 MariaDB 数据目录

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

1mysql -u root -p

提示时,输入 MariaDB 根密码,然后从mysql提示中选择数据目录:

1select @@datadir;
1[secondary_label Output]
2+-----------------+
3| @@datadir       |
4+-----------------+
5| /var/lib/mysql/ |
6+-----------------+
71 row in set (0.00 sec)

此输出确认 MariaDB 已配置为使用默认数据目录, `/var/lib/mysql/,所以这就是我们需要移动的目录。

1exit

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

1sudo systemctl stop mariadb

「systemctl」不會顯示所有服務管理指令的結果,所以如果您想確定成功,請使用下列指令:

1sudo systemctl status mariadb

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

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

现在服务器关闭了,我们将现有的数据库目录复制到新的位置,使用rsync。使用-a旗帜将保留权限和其他目录属性,而-v则提供无语音输出,以便您可以跟踪进展。

<$>[注] 注: 请确保目录上没有后续缩减,如果您使用 tab completion 添加,则可能出现后续缩减:当出现后续缩减时,rsync 会将目录的内容投放到安装点,而不是将其转移到包含 mysql 的目录: <$>

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

一旦rsync完成,将当前文件夹重命名为.bak 扩展,并将其保留,直到我们确认移动成功。

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

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

步骤 2 — 指向新数据位置

MySQL 有几种方法来翻译配置值. 默认情况下,在 /etc/my.cnf 文件中, datadir设置为/var/lib/mysql. 编辑此文件以反映新的数据目录:

1sudo vi /etc/my.cnf

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

1[label /etc/my.cnf ]
2[mysqld]
3. . .
4datadir=/mnt/volume-nyc1-01/mysql
5socket=/mnt/volume-nyc1-01/mysql/mysql.sock
6. . .

更新现有行后,我们需要为mysql客户端添加配置,在文件底部插入以下设置,以免在[mysqld]块和包括行上分裂指令:

1[label /etc/my.cnf ]
2[client]
3port=3306
4socket=/mnt/volume-nyc1-01/mysql/mysql.sock
5
6!includedir /etc/my.cnf.d

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

第3步:重新启动MariaDB

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

1sudo systemctl start mariadb
2sudo systemctl status mariadb

要确保新数据目录确实在使用,请启动显示器。

1mysql -u root -p

再次查看数据目录的值:

1select @@datadir;
1[secondary_label Output]
2+----------------------------+
3| @@datadir                  |
4+----------------------------+
5| /mnt/volume-nyc1-01/mysql/ |
6+----------------------------+
71 row in set (0.01 sec)

键入退出,离开监视器。

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

结论

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

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

Published At
Categories with 技术
comments powered by Disqus