Ubuntu 18.04에서 MySQL 데이터 디렉토리를 재배치하는 방법

소개

시간이 지남에 따라 데이터베이스가 커지고 파일 시스템의 공간에 비해 너무 커질 수 있습니다.


이들이 사용 가능한 공간을 초과하지 않도록하기 위해 MySQL의 루트 데이터 디렉토리를 다른 위치로 안전하게 재배치 할 수 있습니다. 이를 통해 더 많은 공간을 확보하고 스토리지 기능을 최대한 활용하고 이러한 기능의 성능을 최적화 할 수 있습니다. 이것은 MySQL 호스팅의 일반적인 작업.

이 안내서는 MySQL 데이터베이스의 루트 데이터 디렉토리를 다른 위치로 옮기는 데 도움이됩니다..

준비된? 가자!

시작하기 전에

이 프로세스를 성공적으로 실행하려면 다음이 필요합니다.

  • MySQL, Ubuntu 18.04 서버에 설치 및 구성
  • 또한 활용하겠습니다 / mnt / volume-can3-01 루트 데이터 디렉토리의 새 위치로.

1 단계-루트 데이터 디렉토리 재배치

MySQL의 루트 데이터 디렉토리를 재배치 할 때 가장 먼저해야 할 일은 현재 위치를 확인하는 것입니다. 관리자 자격 증명을 사용하여 MySQL의 대화식 세션을 시작합니다. 먼저, 아래 명령을 실행하여 MySQL 프롬프트에 액세스하십시오..

$ mysql -u 루트 -p

MySQL의 루트 비밀번호를 입력하고 클릭 시작하다. MySQL 프롬프트에 액세스하면 원하는 루트 데이터 디렉토리를 선택하십시오.

msql>

select @@ datadir;

그러면 아래와 비슷한 결과가 나타납니다.

+—————–+
| @@ datadir |
+—————–+
| / var / lib / mysql / |
+—————–+
1 행 세트 (0.00 초)

위의 결과는 MySQL 데이터베이스가 활용되도록 설정되었음을 나타냅니다. / var / lib / mysql / 기본 디렉토리로. 이것이 우리의 관심 디렉토리입니다. 이것이 다른 위치로 이동하는 데 필요한 데이터 디렉토리임을 확인했습니다. 이제 출구 모니터를 종료하는 명령.

데이터의 무결성을 유지하려면 아래 명령을 실행하여 데이터 디렉토리를 변경하기 전에 MySQL 서비스를 종료하십시오..

$ sudo systemctl stop mysql

위의 명령에는 한 가지 단점이 있습니다. 서비스 명령의 상태를 표시하지 않습니다. MySQL 서비스가 성공적으로 종료되었는지 확인하려면 아래 명령을 실행하십시오.

$ sudo systemctl status mysql

다음 줄이 출력되면 MySQL이 성공적으로 중지 된 것입니다.

. . .
9 월 27 일 11:24:20 ubuntu-512mb-can3-01systemd [1] : StoppedMySQLCommunityServer.

MySQL 데이터베이스 서버가 실행 중이 아니며 이제 루트 데이터 디렉토리를 다른 위치로 옮기는 것이 안전합니다. rsync 명령을 사용하여 다음을 수행합니다.

$ sudo rsync -av / var / lib / mysql / mnt / volume-can3-01

위의 명령에는 -깃발 디렉토리의 권한 및 기타 속성을 유지합니다. 게다가, 그것은 특징 -v 플래그 자세한 출력을 제공하여 진행 상황을 원활하게 추적 할 수 있습니다..

rsync 프로세스가 완료되면 .박 현재 폴더의 이름을 바꾸는 확장자.

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

이 폴더의 이름을 바꾸면 이전 및 새 파일 위치에서 발생하는 혼동을 제거합니다. 재배치가 완료 될 때까지 현재 폴더를 유지.

이제 구성에 집중할 수 있습니다.

2 단계-새 데이터 디렉토리 구성

MySQL 데이터베이스 서버는 여러 가지 방법으로 구성 규칙을 무시할 수 있습니다. 기본적으로 MySQL의 datadir은 파일에 있습니다. /etc/mysql/mysql.conf.d/mysqld.cnf 이것은의 구성 요소입니다 / var / lib / mysql 예배 규칙서. 먼저 아래 명령을 실행하여 파일을여십시오.

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

파일이 열리면 값으로 줄을 정확하게 찾으십시오. datadir =. / mnt / volume-can3-01 / mysql을 반영하도록이 줄 다음에 오는 경로를 편집하십시오.

. . .
datadir = / mnt / volume-can3-01 / mysql
. . .

구성이 거의 완료되었지만 구성해야 할 측면이 하나 더 있습니다. 설정이 필요합니다 AppArmor MySQL 데이터베이스 서버가 새로 만든 디렉토리에 쓸 수 있도록합니다. 우리는 새로운 위치와 이전 디렉토리 사이에 별칭을 만들 것입니다.

먼저 아래 명령을 실행하여 AppArmor의 별칭 파일을 엽니 다.

$ sudo nano /etc/apparmor.d/tunables/alias

그런 다음 아래의 별칭 규칙을이 파일의 맨 아래에 추가하십시오.

. . .
별명 / var / lib / mysql / -> / mnt / volume-can3-01 / mysql /,
. . .

이제 AppArmor를 다시 시작하여 다음 변경 사항을 구현하십시오.

$ sudo systemctl restart apparmor

생각해 내다: AppArmor가 올바르게 구성되지 않은 경우 아래 오류가 발생합니다.

제어 프로세스로 인해 mysql.service에 대한 작업이 실패했습니다.
오류 코드와 함께 종료되었습니다. 보다 "systemctl 상태 mysql.service"
과"journalctl -xe"자세한 내용은.

또한 저널 systemctl 다음과 같은 결과를 제공합니다.

7 월 1912 : 04 : 23 우분투 -512mb-nyc1-01 시스템 [1] :
mysql.service : 메인 프로세스 종료, code = exited, status = 1 / FAILURE

3 단계-MySQL 서비스 재시작

MySQL을 다시 시작하는 것은 어렵지 않습니다! 그러나이 시점에서 서비스를 다시 시작하면 오류 메시지가 나타납니다. 이 오류는 잘못 구성된 AppArmor의 결과가 아니라 디렉토리 및 기호 링크가 없기 때문에 발생합니다. 때 발생 mysql-systemd-start 심볼릭 링크를 찾지 못했습니다 (-엘) 또는 디렉토리 (-디).

/ usr / share / mysql / mysql-systemd-start

. . .
만약 [ ! -d / var / lib / mysql] && [! -L / var / lib / mysql]; 그때
에코"MySQL 데이터 디렉토리는 / var / lib / mysql에 없습니다. 하나 만들어주세요."
이탈 1
fi

만약 [ ! -d / var / lib / mysql / mysql] && [! -L / var / lib / mysql / mysql]; 그때
에코"MySQL 시스템 데이터베이스를 찾을 수 없습니다. mysql_install_db 도구를 실행하십시오."
이탈 1
fi

. . .

mysql-systemd-start 스크립트 환경 테스트를 통과하기 위해 MySQL 서버를 쉽게 시작할 수있는 기본 디렉토리 모델을 작성합니다..

$ sudo mkdir / var / lib / mysql / mysql -p

이제 MySQL 서비스를 다시 시작할 수 있습니다

$ sudo systemctl start mysql
$ sudo systemctl status mysql

이제 MySQL 프롬프트에 로그인하십시오 :

$ mysql -u 루트 -p

루트 데이터 디렉토리를 확인하십시오

msql>

select @@ datadir;

새 디렉토리가 사용 중이면 다음과 같이 출력됩니다.

+—————————-+
| @@ datadir |
+—————————-+
| / mnt / volume-can3-01 / mysql / |
+—————————-+
1 행 inset (0.01 sec)

그런 다음 새 데이터베이스가 올바르게 작동하는지 확인하고 기존 데이터의 신뢰성을 확인하십시오. 모든 것이 정상이면 아래 명령을 실행하여 백업 파일로 끝나는 백업 파일을 삭제하십시오. .박 신장.

$ sudo rm -Rf /var/lib/mysql.bak

모든 변경 사항을 구현하려면 MySQL 서비스를 다시 시작하십시오.

$ sudo systemctl 재시작 mysql
$ sudo systemctl status mysql

그게 다야!

결론

축하합니다! MySQL 데이터베이스 서버의 루트 데이터 디렉토리를 다른 위치로 재배치하고 새 변경 사항을 보유하도록 AppArmor를 구성했습니다..

이 3 가지 Linux 호스팅 서비스를 확인하십시오.

FastComet

시작 가격 :
$ 2.95


신뢰할 수 있음
9.7


가격
9.5


사용자 친화적
9.7


지원하다
9.7


풍모
9.6

리뷰 읽기

FastComet 방문

주인공

시작 가격 :
$ 0.99


신뢰할 수 있음
9.3


가격
9.3


사용자 친화적
9.4


지원하다
9.4


풍모
9.2

리뷰 읽기

Hostinger 방문

ChemiCloud

시작 가격 :
$ 2.76


신뢰할 수 있음
10


가격
9.9


사용자 친화적
9.9


지원하다
10


풍모
9.9

리뷰 읽기

ChemiCloud 방문

관련 사용법 기사

  • Ubuntu 18.04 VPS 또는 전용 서버에서 MySQL 5.7의 성능 조정 및 최적화 방법
    전문가
  • 새로운 MySQL 사용자 계정을 생성하고 MySQL 권한을 관리하는 방법
    초보자
  • Ubuntu 18.04 VPS 또는 전용 서버에서 DBdeployer를 사용하여 MySQL 샌드 박스를 설치하고 만드는 방법
    초보자
  • Ubuntu 18.04에 Magento를 설치하는 방법
    중급
  • MySQL 5를 비활성화하는 방법 "엄격한 모드" Ubuntu 18.04 VPS 또는 전용 서버
    중급
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me