SQL COOK

MySQL database 다른 서버로 이동

MySQL database 다른 서버로 이동

MySQL database 다른 서버로 이동

상황 : 홍보 및 공지용 웹페이지를 MySQL과 공개된 PHP보드로 개발되어 있다. 주기적으로 관리하고 있는데 갑자기 데이타베이스 연결자체가 되지 않아 사이트가 보이지 않는 문제가 발생하였다.

원인을 분석해보니 데이타베이스가 실행 도중 MySQL이 업데이트 되면서 MySQL설정파일이 깨졌기 때문에 서버 기동자체가 되지 않고 그 데이타베이스를 사용하는 간단한 홍보용 페이지들이 모두 기동되지 않는 문제가 발생하였다.

그래서 해당 데이타베이스 파일만 다른 서버에 MySQL에 이관하고 설정파일만 변경해주는 식으로 작업을 하기로 하였다.

해당 데이타베이스 자체에 접속자체도 안되는 상황이었지만 데이타베이스 파일은 그대로 보관되어 있어서 이 작업이 가능하였다.

1. 원본 데이타베이스 백업
sudo ls /var/lib/mysql/

유분투 12.04 운영체제를 사용하고 있다. apt-get(패퀴지 관리자)로 MySQL를 설치하고 특별한 옵션을 주지 않았다면 /var/lib/mysql/ 해당 경로에 데이타베이스파일들이 있다.

[내용을 참조한 곳]

kangdr@kangdr-K8VM890:~$ sudo cp -rf  /var/lib/mysql/[dbname] ~/[dbname]

데이타베이스 파일을 복사한다.

 

2. 원본 데이타베이스 다른 이관할 서버에 복사

이관할 서버로 복사한다. scp 프로그램을 사용하면 원격에 서버로 쉽게 파일을 복사할 수 있다.

[내용을 참조한곳]

sudo scp -r dbfolder / root@172.16.50.50:~/dbfolder

패스워드 입력창이 나오면 다른서버로 파일들이 복사가 된다.

 

3. 이관할 서버에 복사한 데이타베이스를  MySQL 데이타베이스가 모여있는 폴더로 이동 시킴

파일이 복사된 서버에서  MySQL를 설치되어 있다.

복사된 데이타베이스 폴더를 /var/lib/mysql/ 로 이동시킨다.(관지라 권한 필요)

sudo cp -rf dbfolder/ /var/lib/mysql/dbfolder

 

mysql console를 이용해서 현재 서버의 데이타베이스를 확인하면 복사된 데이타베이스가 추가된 것을 확인 할 수 있을 것이다.

mysql -uroot -p
show databases;
use database;
show tables;

추가된 데이타베이스를 선택하고 다시 사용하려 하면 에러 아래와 같은 에러 메시지를 보여준다.

ERROR 1018 (HY000): Can't read dir of './dbname/' (errno: 13)

 

4. MySQL 파일들 권한 조정

해당 데이타베이스의 권한이 없어서 나는 에러이다. /var/lib/mysql/폴더에 가서 복사한 데이타베이스 파일들을 권한을 준다.

[참조한 페이지]

cd /var/lib/mysql/
ls -l
chown mysql:mysql dbname/ -R

권한준 준 다음 데이타베이스안에 테이블를 조회하면 에러 메시지가 안나오면 정상적으로 이관이 완료된것 이다.

mysql -u user -p dbname -e 'show tables;'

 

댓글

댓글 본문
  1. happydeveloper
    cp -r /path/to/my/database /var/lib/mysql/new_database
    위에 명령어를 이용해서 데이타베이스 설정 파일을 옮기시면 되실 것 같습니다.

    제가 찾은 관련 링크입니다.
    http://stackoverflow.com......uld

    찹조 부탁드리고 그래도 안되면 또 말씀해주세요.
    이노디비의 경우 관련 설정파일도 옮겨줘야 하는 것 같습니다.
    대화보기
    • 민구민구
      감사합니다. 그런데 show tables;로 조회까지는 되는데
      select 하면 Table 'DB.table' doesn't exist 라고 나오네요.. 뭐가 문제일까요
    • 민1004
      감사합니다.
    • happydeveloper
      가능한걸로 알고 있습니다. 이런 방식을 In-Place upgrade라고 하는 것 같습니다. 그러나 업그레이드시 고려할 점도 있는 것 같습니다. 서버설정과 서버내 함수와 디플리케이션된 sql이 없는지 확이하셔야 할 것 같아요. http://www.percona.com......tml 위 문서를 참조하였습니다. 테스트는 못해보았습니다. 그럼 좋은 하루 되세요
      대화보기
      • mysql 5.0에서 mysql 5.5로 이관해도 되나요?
      버전 관리
      happydeveloper
      현재 버전
      선택 버전
      graphittie 자세히 보기