mysql数据库没有可用空间

mysql数据库没有可用空间

我正在恢复200GB数据库到新安装的RHEL机器。然而,在恢复时我遇到了no space available问题。

是否可以更改数据库的存储目录?

答案1

首先,我仅使用以下查询即可验证它是否与空间问题相关mysql

mysql -uUSER -p -e 'SHOW VARIABLES WHERE Variable_Name LIKE "%dir"'

上面的命令返回给我的输出为,

+---------------------------+----------------------------+
| Variable_name             | Value                      |
+---------------------------+----------------------------+
| basedir                   | /usr                       |
| character_sets_dir        | /usr/share/mysql/charsets/ |
| datadir                   | /var/lib/mysql/            |
| innodb_data_home_dir      |                            |
| innodb_log_group_home_dir | ./                         |
| lc_messages_dir           | /usr/share/mysql/          |
| plugin_dir                | /usr/lib/mysql/plugin/     |
| slave_load_tmpdir         | /tmp                       |
| tmpdir                    | /tmp                       |
+---------------------------+----------------------------+

从上面的命令我们可以看到,数据目录存在于/var/lib/mysql.现在,我需要确保/var没有足够的空间来容纳数据库,在这种情况下我的检测是正确的。我使用以下命令实现了它。

df -P /var | tail -1 | cut -d' ' -f 1

上面的命令基本上告诉了特定目录的挂载点。正如我怀疑的那样,挂载点在/dev/sda2其下只有40GB空间。现在,更改数据目录非常简单。

使用停止 mysql 服务,

service mysqld stop

编辑该文件/etc/my.cnf以使其具有数据目录到有足够空间的某个分区。(这是针对 RHEL 的,可能因操作系统版本而异)。更改数据目录,使用命令重新启动mysql服务,

service mysqld start

参考

https://stackoverflow.com/questions/17968287/how-to-find-the-mysql-data-directory-from-command-line-in-windows

https://stackoverflow.com/questions/3274354/how-to-find-out-mount-partition-a-directory-or-file-is-on-linux-server

答案2

是的,您可以通过更改 .db 文件中的 datadir 变量来更改 MySQL 数据库数据所在的位置/etc/my.cnf

在尝试以下步骤之前,请确保备份您的数据。

  1. 停止 mysqld 服务 ( systemctl mysqld stop)。
  2. 编辑/etc/my.cnfdatadir 变量并将其更改为您想要的位置 ( datadir='insert_path_to_new_location'),并确保记下之前的位置以供下一步使用。
  3. 将数据从旧的 datadir 位置复制到新位置。
  4. 启动 mysqld 服务 ( systemctl mysqld start)。
  5. 验证 mysqld 服务是否在新位置正常工作。
  6. 清理旧数据目录中的残留物!

答案3

是的,您可以使用 my.cnf 文件中的设置来更改 MySQL 数据库的驻留位置。

相关内容