마스터포유(Master4U)
Monday, 17 of January
 

로그인 Category
Mysql 4.1 다른점
김인호  2008-01-06 00:41:56 Hit:3608
링크 #1: http://blog.naver.com/narrpro/90025154870

mysql4.1 다른점 리눅스

2007/12/05 09:30

http://blog.naver.com/narrpro/90025154870

mysql4.1은 4.0에 비하여 user, db 테이블의 컬럼에 collate utf8_bin, character set utf8 옵션등이 추가가 되었다.
따라서 그냥  데이타베이스 디렉토리를 옮기고 실행할 수가 없다. 실행하면 character sete에 관련된 오류가 발생하고 바로 mysql이 죽는다.

# 오류 내용
060626 10:32:07 [Warning] './mysql/host' had no or invalid character set, and default character set is multi-byte, so character column sizes may have changed
060626 10:32:07 [Warning] './mysql/user' had no or invalid character set, and default character set is multi-byte, so character column sizes may have changed
060626 10:32:07 [Warning] './mysql/db' had no or invalid character set, and default character set is multi-byte, so character column sizes may have changed
060626 10:32:07 [ERROR] Fatal error: mysql.user table is damaged or in unsupported 3.20 format.
060626 10:32:07  mysqld ended

그리고 user의 password 컬럼의 사이즈도 기존 16에서 41로 늘어났다.
이로 인해 /etc/my.cnf
[mysqld]
set-variable    = old_password=1
위의 변수를 설정해줘야 한다.

따라서 디비마다 덤프를 받아서 import를 시켜줘야 한다. 작업 순서는 아래와 같다.

1. 기존 운영중인 4.0.x 의 mysql 데이타베이스를 덤프 받는다.
# mysqldump -uroot -p mysql > mysql.sql
다음으로 mysql.sql파일을 열어서 user, db 테이블만 나누고 모든 라인을 삭제한다. 그리고 user, db 테이블 생성하는 것 구문도 없앤다. 마지막으로 남는 것은 user, db에 관련된 insert문만 남을 것이다. user의 insert문중 user컬럼중 root에 관련된 라인도 삭제한다. 이미 등록이 되어 있으므로...

2. mysql4.0.x의 전체 데이타베이스를 덤프를 받는다.
# mysqldump -uroot -pmysql --all-databases > database.dmp

파일을 열어서 mysql 및 test 데이타베이스와 관련된 테이블 생성 및 insert구문은 삭제한다. 이미 생성되어 있으므로..

3. mysql.dmp의 가장 상단에는
set foreign_key_checks=0;
하단에는
set foreign_key_checks=1;
옵션을 넣어준다. 이유는 이것을 하지 않을 경우 foreign key constraints옵션이 있는 테이블을 생성할 경우  foreign key를 체크하기때문에 foregin key 를 참조하는 테이블이 없으면 오류가 발생하고 중단된다.
따라서 이 옵션은 foreign key를 체크하지 않겠다는 것이다. 마지막은 원래대로 돌려놓는 것이다.

4. 기존 mysql4.0으로 운영중인것을 중지하고 mysql4.1대로 가동한다.
(참고 : /etc/my.cnf에서 default-character-set=euc_kr인것을  euckr로 변경해준다.)

5. 위의 mysql.sql, database.dmp를 각각 import시킨다.

6. 그리고 홈페이지에서 디비 접속이 제대로 되고 있는지 확인한다.

마지막으로 innodb는 mysqldump에 모두 들어가 있으므로 혹시라도 ibdata관련 파일을 복사하지 않도록 한다
본문인쇄본문메일발송
Apache 2.x, MySQL 4.1 이상에서 UTF-8과 EUC-kr 함께 쓰기
Mysql upgrade -- 세번째(4.1버전) [1]
Copyright 1999-2019 Zeroboard / skin by ChanBi