나는 회복 중입니다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에만 해당되며 OS 버전에 따라 다를 수 있습니다). 변화데이터 디렉토리, 명령을 사용하여 mysql 서비스를 다시 시작하고,
service mysqld start
인용하다
답변2
예, .db 파일의 datadir 변수를 변경하여 MySQL 데이터베이스 데이터의 위치를 변경할 수 있습니다 /etc/my.cnf
.
아래 단계를 시도하기 전에 데이터를 백업하십시오.
- mysqld 서비스를 중지합니다(
systemctl mysqld stop
). /etc/my.cnf
datadir 변수를 편집하여 원하는 위치(datadir='insert_path_to_new_location'
)로 변경하고 다음 단계를 위해 이전 위치를 기록해 두십시오.- 이전 datadir 위치의 데이터를 새 위치로 복사합니다.
- mysqld 서비스(
systemctl mysqld start
)를 시작합니다. - mysqld 서비스가 새 위치에서 제대로 작동하는지 확인하십시오.
- 이전 데이터 디렉토리의 남은 부분을 정리하십시오!
답변3
예, my.cnf 파일의 설정을 사용하여 MySQL 데이터베이스가 있는 위치를 변경할 수 있습니다.