블로그 이미지

개발로그 - DevLog

프레임워크(framework), 웹2.0 등 개발기술과 서비스 by 태미(taemy)


'에러복구'에 해당되는 글 1건

  1. 2008/02/10 mysql 4.0.x -> mysql 4.1 업그레이드시 오류 해결 방법(1)

mysql 4.0.x -> mysql 4.1 업그레이드시 오류 해결 방법

예전 업그레이드 관련글에 포함할까 하다가 따로 빼기로 했다.
ubuntu 를 기준으로 설명.

간단한 업그레이드 절차를 살펴보면.
1. 업그레이드 전 데이터 덤프 ( mysqldump --all-databases > db_dump.sql )
2. mysql 서버 업그레이드 ( apt-get install mysql-server-4.1 )

이렇게 업그레이드 후에 오류가 발생해서 실행이 안되는 경우가 있다.

1. /var/log/syslog 를 살펴보면 아래 과 같은 에러메세지가 나올때
mysqld : Character set 'euc_kr' is not a compiled character set is not specified in the ..  .. index.xml
 * 기존 /etc/mysql/my.cnf 의 euc_kr 으로 된 부분을 euckr 로 변경
 * 4.0.x 에서는 euc_kr 을 썼는데,  4.1.x 버전 이상은 euckr 으로 쓴다.
 * my.cnf 에서 바꾸어 주기만 하면 된다.(euc_kr -> euckr)
 * 다시 mysql 서버 시작 하면 정상작동.

2. 다시 로그를 살펴보면. multi-byte
 실행은 되었는데, [Warining] 이 무지 많이 보일 경우가 있을 것이다.
{db_name}  had no  or invalid character set, and default character set is multi-byte, so character column sizes may have changed
라는 메세지를 보고, 다음과 같이
alter table {table_name} convert to character set utf8
처럼 복구하면 한글 같은 2byte character 들의 사이즈가 반으로 줄어버리게 된다.
(게다가 저렇게 복구하려면 힘들다. 테이블이 한두개라면 모를까)

이때는 업그레이드 전에 덤프한 데이터를 다시 복구(restore) 하면 된다.(복구하면서 알아서 charset 을 설정)

3. 복구후에 DB를 덤프할때 '화일을 찾지 못했습니다' 에러를 만난다면
mysqldump: Got error: 1017: 화일을 찾지 못했습니다. './{db_name}/{table_name}.frm' (에러번호: 24) when using LOCK TABLES

또는 영어로  Can't find file  , errno: 24
개별적 해당 테이블을 덤프하면 이상이 없다.

이 메세지가 나오는 이유는  이 숫자때문이다.  바로 '1024'
아! 감이 왔나?  mysql 이 한번에 열수 있는 파일이 제한되어 있다.
해당 옵션은  show variables like '%open%' 으로 확인할 수 있다.
바로 open_files_limit  가 1024 로 되어 있을 것이다.

/etc/my.cnf 의 [mysqld] 탭에  open_files_limit=2048  등으로 설정한다.

그런데, 4.0 에서는 이상없이 dump 가 가능하다.
4.0 과 4.1 의 mysqldump 의 내부적으로 다르게 처리하는 듯 하다.
이유를 살펴보니, --lock-tables 라는 옵션때문이다.
4.1 에서 --lock-tables=false 로 옵션을 주고 dump 하면 위의 문제는 없어진다.
lock-tables 옵션을 사용하려면 위의 open_files_limit 를 설정해주어야 한다.(선택은 각자 알아서)

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Comment 1 Trackback 0
  1. 막둥이 2008/03/05 22:03 address edit & delete reply

    퍼가요

Trackback : http://devlog.experlab.com/trackback/404 관련글 쓰기

Top

prev 1 next