MySql 5.0.X 에서 5.1.X 로 데이터 이전하기
2010년 1월 7일 by 김 승엽Tweet
그저께 서버로 데이터 이전 작업을 하면서 주로 블로그 쪽의 데이터 상태들을 체크해서 모르고 있었는데, 어제 확인해 보니 mediawiki 쪽의 데이터 베이스에 문제가 있었다.
원래 예전 데이터 베이스의 바이너리 파일을 그대로 복사해서 가지고 있었기 때문에 새로 구축한 서버에 그 파일들을 옮기면 작업이 완료될 것 이라고 생각했는데 어디선가 문제가 발생한 모양이었다. 바이너리 파일을 그대로 복사하여 복원하는 방법은 이미 Vmware에 설치 한 CentOS 에서 테스트 해서 이상이 없는지 확인을 했었기 때문에 별 문제 없을 거라고 확신하고 있었는데 문제가 발생하니 좀 난감했다.
처음에 시도했던 방법은 현재의 데이터 베이스를 지우고 백업했던 sql 파일로 복원하는 것이었는데 이게 제대로 작업이 되지 않았다.
Specified key was too long; max key length is 1000 bytes
라는 에러메시지와 함께 복구 작업이 진행되지 않아 - -force 옵션을 주고 강제로 복원을 시도했는데 누락되는 테이블이 있었다.
결국 sql 문을 수정해야 할 것 같아 살펴보다 CentOS 쪽에 살려놓은 데이터 베이스에서 mediawiki 의 InnoDB 타입으로 된 테이블을 복구하는 작업에서 문제가 발생한다는 것을 알았다. 그래서 혹시나 하고 서버에 설치된 mysql이 InnoDB 를 지원하는 지 확인해보니 지원이 되지 않는 상태였다.
서버를 설치했던 후배에게 연락을 해서 InnoDB를 일부러 뺐는지 확인을 한 뒤에 my.cnf 파일에 주석처리 된 관련 설정들을 다시 풀고 mysql 을 재시작 했는데, 에러 때문에 시작에 문제가 있었다. InnoDB 관련 옵션들을 찾을 수 없다고 하는 메시지 였는데 일부러 InnoDB를 빼지 않았을텐데 왜 이런 메시지가 발생하는지 알 수 없어 검색해보니 5.0.X 버전과 5.1.X 버전과의 차이 때문인 것 같았다.
이전 버전에서는 따로 옵션을 주지 않으면 기본으로 포함되는 것으로 알고 있었는데, 5.1.X 버전부터는 –with-plugins=innobase 옵션을 추가해주고 컴파일 해줘야 InnoDB가 활성화 된다는 것이었다. 다시 mysql 을 컴파일하니 sql 파일 복원에 나타나던 에러메시지가 나타나지 않았다. 처음에는 5.0.X 버전에서 상위 버전으로 데이터를 이전하면서 발생하는 문제인 줄 알았는데 InnoDB의 문제를 해결하고 나니 –default-character-set 정도의 옵션만 주의해주면 별 다른 문제 없이 이전이 가능했다.
innoDB를 사용하지 않는다면 버전차이가 있다고 해도 큰 이상은 없는 것 같고. mediawiki 처럼 innoDB를 사용하는 툴의 경우에는 mysql에 설정이 어떻게 되어 있는지 확인해 보고 작업을 진행하는 것이 올바른 순서인 것 같다. 짧지 않는 시간동안의 이런저런 시도로 결국 에러는 잡았지만 어제 새로 작성한 포스트도 있고 복구에 사용한 백업 파일에 누락된 내용들이 있어서 가지고 있는 백업본들을 이리저리 짜깁기 해서 데이터들을 복구하느라 시간은 생각보다 많이 걸렸다. phpmyadmin 이라도 깔려있었기에 그나마 빨리 끝날 수 있었던 것 같다.

:
: