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

数据库随时间增长,有时会超过文件系统上的空间。当它们位于与操作系统的其余部分相同的分区上时,也可能遇到I / O争用。 RAID,网络块存储和其他设备可以提供冗余和其他...


分类:MariaDB CentOS系统 操作系统 数据库


 2016-12-19 22:03:19
介绍
数据库随时间增长,有时会超过文件系统上的空间。当它们位于与操作系统的其余部分相同的分区上时,也可能遇到I / O争用。 RAID,网络块存储和其他设备可以提供冗余和其他期望的特征。无论是添加更多空间,评估优化性能的方法,还是希望利用其他存储功能,本教程将指导您重新定位MariaDB的数据目录。
先决条件
要完成本指南,您需要:
一个CentOS 7服务器与非root用户sudo安装特权和MariaDB。 您可以了解更多有关如何设置这些权限的用户在我们使用CentOS 7初始服务器设置指南。 如果您尚未安装MariaDB的,该如何在CentOS安装MariaDB的7指南可以帮助你。
在这个例子中,我们将数据移动到安装在块存储设备/mnt/volume-nyc1-01 。 你可以学习如何设置一个在如何使用块存储上DigitalOcean指南。 无论您使用什么底层存储,本指南都可以帮助您将数据目录移动到新位置。
第1步 - 移动MariaDB数据目录
要准备移动MariaDB的数据目录,让我们通过使用管理凭据启动交互式会话来验证当前位置。
mysql -u root -p
出现提示时,提供MariaDB root密码。再从mysql提示下,选择数据目录:
select @@datadir;
+-----------------+
| @@datadir       |
+-----------------+
| /var/lib/mysql/ |
+-----------------+
1 row in set (0.00 sec)
此输出证实,MariaDB的配置为使用默认的数据目录, /var/lib/mysql/,所以这是我们需要移动的目录。 一旦你已经证实了这一点,类型exit ,按“ENTER”离开显示器:
exit
为了确保数据的完整性,我们将在我们实际更改数据目录之前关闭MariaDB:
sudo systemctl stop mariadb
systemctl不显示所有服务管理命令的结果,所以如果你想确保你已经成功了,请使用以下命令:
sudo systemctl status mariadb
如果输出的最后一行告诉您服务器已停止,您可以确定它已关闭:
. . .
Dec 16 18:29:26 mysql systemd[1]: Stopped MariaDB database server.
现在,服务器关闭,我们将现有的数据库目录复制到新的位置用rsync 。 使用-a标志保留的权限和其他目录属性,而-v提供详细输出,以便能够按照进度。 注意:确保没有对目录没有尾随斜线,如果你使用制表符完成可以加入。当有一个结尾的斜线, rsync将转储目录复制到安装点,而不是转移成一个包含内容mysql目录:
sudo rsync -av /var/lib/mysql /mnt/volume-nyc1-01
一旦rsync完成,用.bak扩展名重命名当前文件夹中保存,直到我们确认,此举是成功的。通过重命名它,我们将避免可能由于新的和旧的位置中的文件引起的混乱:
sudo mv /var/lib/mysql /var/lib/mysql.bak
现在我们准备把注意力转向配置。
第2步 - 指向新数据位置
MySQL有几种方法来覆盖配置值。默认情况下, datadir被设置为/var/lib/mysql中/etc/my.cnf文件。编辑此文件以反映新的数据目录:
sudo vi /etc/my.cnf
查找开头的行datadir= ,改变它遵循以反映新的位置的路径。此外,由于套接字以前位于数据目录中,我们需要将其更新到新位置:
/etc/my.cnf
[mysqld]
. . .
datadir=/mnt/volume-nyc1-01/mysql
socket=/mnt/volume-nyc1-01/mysql/mysql.sock
. . .
更新现有的生产线后,我们将需要增加配置的mysql客户端。 在文件的底部插入下面的设置,因此将不会在分裂指令[mysqld]块及以上include行:
/etc/my.cnf
[client]
port=3306
socket=/mnt/volume-nyc1-01/mysql/mysql.sock


!includedir /etc/my.cnf.d
当你完成后,点击ESCAPE ,然后键入:wq!保存并退出文件。
第3步 - 重新启动MariaDB
现在我们已更新配置以使用新位置,我们已准备好启动MariaDB并验证我们的工作。
sudo systemctl start mariadb
sudo systemctl status mariadb
要确保新的数据目录确实在使用,请启动监视器。
mysql -u root -p
再次查看数据目录的值:
select @@datadir;
+----------------------------+
| @@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数据目录
设置多个数据目录

你可能感兴趣的:(运维)