글 제목: (참고) MySQL 서버의 db 로케이션 이동
올림: 2010/05/26 수 3:59 pm 가입일: 2008/08/18 월 8:57 pm 글: 59
원래 MySQL의 기본 DB 로케이션인 /var/lib/mysql 으로 데이터를 쌓아두고 있었는데, 하드디스크를 하나 더 장만하게 되며 datadir을 옮기게 되었습니다.
원래 그렇게 어려운 것이 아니고 그냥 /var/lib/mysql에 있던 파일들을 몽땅 새 datadir에 옮기며 mysql서버 설정(/etc/mysql/my.cnf)을 다시 잡아주며 소소한 몇 가지만 처리하면 되는거지만, 요 소소한 몇 가지가 빼먹기 쉬운 것이라 글타래 남깁니다.
Step 1) mysql서버를 정지시킨 뒤에 기존 /var/lib/mysql에 있는 파일들을 모두 새 로케이션으로 복사합니다.
Code: sudo /etc/init.d/mysql stop sudo cp -rp /var/lib/mysql /home/DataWareHouse/.mysqldb
(*참고:새로 산 하드디스크를 /home/DataWareHouse 로 마운트하였습니다*)
Step 2) 새로운 DB 폴더의 소유자 및 권한을 수정합니다. MySQL서버 DB에 MySQL서버가 접근하기 위해서는 DB폴더의 소유자를 mysql:mysql로 해야합니다(우분투에서는 mysql:adm이더군요) Code:
sudo chown -R mysql:adm /home/DataWareHouse/.mysqldb sudo chmod -R 777 /home/DataWareHouse/.mysqldb
Step 3) 여기가 제가 헤맨 부분인데, 이걸 몰라서 며칠동안 버벅였습니다. 언제부터인지는 모르겠지만 apparmor가 mysql서버를 감독하고 있더군요(찾아보니 우분투 8.04부터라네요) apparmor의 mysql데몬의 설정파일을 엽니다.
Code: vi /etc/apparmor.d/usr.sbin.mysqld
그리고 다음 구문을 추가한 뒤 저장합니다.
Code: /home/DataWareHouse/.mysqldb r, /home/DataWareHouse/.mysqldb/** rwk,
그리고 apparmor를 재기동.
Code: /etc/init.d/apparmor restart
Step 4) 마지막으로 mysql설정인 /etc/mysql/my.cnf를 수정합니다.
Code: vi /etc/mysql/my.cnf datadir=/var/lib/mysql
로 잡혀있던 기본설정을 수정
Code: datadir = /home/DataWareHouse/.mysqldb
mysql서비스 재실행
Code: /etc/init.d/mysql restart
정상적으로 서비스가 기동되면 기존 /var/lib/mysql에 있던 파일들을 삭제합니다.
sudo rm -r /var/lib/mysql/*
만약 Step 2또는 3를 빼먹게 된다면 mysqld 기동시 다음과 같은 에러메세지가 나올겁니다.
Quote: ... May 22 22:18:06 geek-desktop mysqld[10937]: ...
[Warning] Can't create test file /home/DataWareHouse/.mysqldb/geek-desktop.lower-test May 22 22:18:06 geek-desktop mysqld[10937]: ...
[Warning] Can't create test file /home/DataWareHouse/.mysqldb/geek-desktop.lower-test ... ...mysqld: Can't 어쩌구저쩌구
(Errcode: 13) May 22 22:18:06 [ERROR] Aborting May 22 22:18:06 [Note] .../mysqld: Shutdown complete

+ Recent posts