MySQL 데이터베이스의 다른 위치?


18

디스크의 별도 위치에 특정 데이터베이스를 저장하도록 MySQL을 구성 할 수 있습니까?

새 데이터베이스를 기본 위치로 이동하고 싶지만 Dropbox 폴더에 저장하려는 특정 데이터베이스가 있으므로 몇 대의 컴퓨터간에 동기화 상태를 유지할 수 있습니다.

어떻게해야합니까?


1
또한, 다른 방법으로이 작업을 수행 할 수 있습니다. 그것이로 데이터베이스를두고 심볼릭 링크 드롭 박스에서. Dropbox는 실제로 심볼릭 링크를 이해하지 못하며 정상적으로 심볼릭 링크를 동기화합니다.
TRiG

답변:


27

물론 당신은 할 수! 루트 권한부여 해야합니다 . ln 설명서 페이지를 읽으십시오 .

MySQL은 데이터베이스 데이터를에 별도의 디렉토리에 저장합니다 /var/lib/mysql. 처음에는 선택한 데이터베이스 파일을 넣을 디렉토리를 만들어야한다고 생각합니다. 루트 권한을 부여하고 MySQL 데몬을 중지하십시오.

# /etc/init.d/mysql stop

데이터를 새 폴더에 복사하십시오.

# cp /var/lib/mysql/DATABASENAME /path/to/new/database/dir

MySQL 데이터 파일에서 이전 디렉토리를 제거하십시오. ( 경고! 항상 SQL 덤프를 먼저 만드십시오 !!! )

# rm -R /var/lib/mysql/DATABASENAME

(: MySQL의 데이터 디렉토리에 심볼릭 링크 다시 확인 !에주의를 먼저 LN의 매뉴얼 페이지를 읽어! )

# ln -s /full/path/to/new/database/dir /var/lib/mysql/DATABASENAME

그 후에는 준비가 완료된 다음 MySQL을 시작하십시오.

# /etc/init.d/mysql start

경고! MySQL에서 새 디렉토리를 쓰고 읽을 수 없다면 작동하지 않습니다! 예를 들어 일반적인 문제 : 새 데이터 디렉토리를 홈 폴더에 배치하면 홈 폴더는 다른 사람들에 의해 보호됩니다 (예 : drwxrwx --- 당신은 당신의 디렉토리).

그 방법에 대해 다른 것을 알고 싶다면 물어보십시오!


2
감사! 나는 심볼릭 링크조차 고려하지 않았으며 mysql 내에서 그것을 수행하는 방법에 대해 너무 바빴다.
콜린

8
/etc/apparmor.d/*mysqld새 디렉토리도 포함 하도록 편집하고 싶을 것 입니다. 그런 다음 sudo service apparmor reloadMySQL을 다시 시작하기 전에.
Kees Cook

3
@KeesCook는 apparmor 팁에 대해 대단히 감사합니다. 외모가에 넣어 더 나은처럼 /etc/apparmor.d/local(내 이미 usr.sbin.mysqld이있어 설치를에) 하나를 추가,하지만 /full/path/to/new/database/dir/** rwk,... 나를 위해 그것을 한
토비아스 J

대단히 감사 합니다. 여기 에서 의류 편집에 대한 세부 정보 도 유용합니다. 부팅시 자동으로 마운트되지 않은 드라이브에 데이터베이스를 넣으려는 속도가 느려졌으며 액세스하기 위해 루트 사용자가 필요했습니다. 일을 거부했다. 편집 fstab처럼 때문에 해당 드라이브가 부팅 후 파일 시스템에 장착 된 것을, 지금은 모든 것이 작동합니다.
카 다몬

3

Ubuntu를 사용하는 경우 AppArmour 구성 파일 /etc/apparmor.d/usr.sbin.mysqld에 항목을 추가해야합니다. 그렇지 않으면 파일 및 폴더를 변경하더라도 쓰기 권한 오류가 계속 발생합니다. 권한.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.