Mysql

mysql數據庫沒有可用空間

  • June 5, 2020

我正在將一個200 GB的數據庫恢復到新安裝的RHEL機器中。但是,在恢復時我遇到了no space available問題。

是否可以更改儲存數據庫的目錄?

首先,我只能使用以下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                       |
+---------------------------+----------------------------+

從上面的命令中我們可以看到,datadir存在於/var/lib/mysql. 現在,我需要確保/var沒有足夠的空間來容納數據庫,在這種情況下我的檢測是正確的。我使用以下命令實現了它。

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

上面的命令基本上告訴了特定目錄的掛載點。正如我所懷疑的那樣,掛載點/dev/sda2只有40 GB的空間。現在,更改數據目錄很簡單。

使用停止mysql服務,

service mysqld stop

編輯文件/etc/my.cnf以將datadir放到我們有足夠空間的某個分區。(這適用於 RHEL,可能因作業系統版本而異)。更改datadir後,使用命令重新啟動 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

引用自:https://unix.stackexchange.com/questions/134498