MySQL 4.0 > MySQL 4.1 > MySQL 5.0 [on FreeBSD]Category :: 운영체제/FreeBSD |
Oper.or.kr 서버에는 FreeBSD 6.1-Release 와 MySQL 4.0 을 사용하고 있었습니다. 그런데 가끔 이것저것 설치할 때마다 MySQL 4.1 이상을 요구하는 것들이 많아지고 해서 이 기회에 MySQL 4.1 로의 업데이트를 예정하고 있었습니다. 그런데 5.0 까지는 괜찮다고 하는 소리가 있어 MySQL 5.0 으로 업데이트 하기로 하고 날짜를 잡고 오늘 새벽 1시 30분 작업을 시작했습니다.
혹시 이 문서를 참고하여 MySQL 을 업데이트 하고자 하시는 분은 먼저 끝까지 훑어보신 뒤 참고하시기 바랍니다.
우선 아래 명령어를 이용하여 각각의 데이터 베이스를 백업 받습니다.
그리고 혹시 모르니 데이터 디렉터리를 째로 복사해서 백업하고, 서비스를 종료합니다.
자 우선 MySQL 4.0 을 삭제하고 MySQL 4.1 을 설치합니다. 혹시 /etc/my.cnf 가 있다면 삭제해 줍니다.
설치를 정상적으로 마쳤다면 아래 명령어로 MySQLd 를 safe 모드로 실행시키고, 무언가(?)를 fix 합니다. 그 다음 데몬을 사알짝 종료시킵니다.
자 이제 MySQL 을 시작하고, 백업한 데이터를 각각의 디비에 복원합니다.
복원을 마쳤으면 MySQL 4.0 에서 MySQL 4.1 로의 업데이트가 끝났습니다. MySQL 4.1 까지 업데이트 하고자 한다면 이까지의 작업만 행하면 됩니다.
이제 MySQL 5.0 으로의 업데이트를 시작합니다. MySQL 4.1 로의 업데이트와는 달리 가볍게 컴파일과 설치만 해주면 됩니다.
처음 해보는 업데이트인지라 여러 시행착오도 많았고, 난관도 많았지만 우여곡절 끝에 마무리를 다 지었습니다. 사실 위에 기술한 것 외에 세부적으로 한 것들이 많지만, 시시각각으로 달라지는 것들이라 전부 적지는 않았습니다.
그 중 한가지를 말하자면, 저는 인코딩을 euckr 로 사용하고 있습니다만, 태터툴즈 등을 사용하기 때문에 디비 안의 일부 테이블에는 utf8 자료가 꽤나 들어있습니다. 이렇게 하나의 디비에 euckr 과 utf8 데이터가 모두 들어있다면 백업을 테이블 단위로 하는 것이 현명한 방법입니다. 대신 백업을 하면서 어떤 테이블에 euckr 가 있고 어떤 테이블에 utf8 가 있는지 정도는 미리 알아야 합니다. 복원할 때 --default-character-set=utf8 과 같은 옵션을 주어야 된다는 점을 잊지 마시고요.
전 백업을 잘못해서 MySQL 4.0 만 세번을 다시 깔았는데요. 역시 그 중 한가지를 들어보자면 mysqldump 옵션 중에 --quote-names 옵션을 빼먹어서 나중 복원할때 필드명이 예약어인 것들이 걸리면 에러를 수억개 발생시키곤 했습니다.
처음부터 계획(?)을 확실하게 세워 저처럼 3시간 동안 고생하는 일이 없도록 합시다;
참고 문서 :
혹시 이 문서를 참고하여 MySQL 을 업데이트 하고자 하시는 분은 먼저 끝까지 훑어보신 뒤 참고하시기 바랍니다.
우선 아래 명령어를 이용하여 각각의 데이터 베이스를 백업 받습니다.
# mysqldump --add-drop-table --flush-logs -pROOT_PASSWORD --quote-names EACH_DB > EACH_DB.sql
그리고 혹시 모르니 데이터 디렉터리를 째로 복사해서 백업하고, 서비스를 종료합니다.
# cp -R /var/db/mysql /var/db/mysql_backup
# /usr/local/etc/rc.d/mysql-server stop
# /usr/local/etc/rc.d/mysql-server stop
자 우선 MySQL 4.0 을 삭제하고 MySQL 4.1 을 설치합니다. 혹시 /etc/my.cnf 가 있다면 삭제해 줍니다.
# cd /usr/ports/databases/mysql40-client
# make deinstall
# cd /usr/ports/databases/mysql40-server
# make deinstall
# rm -f /etc/my.cnf
# cd /usr/ports/databases/mysql41-server
# make install WITH_CHARSET=euckr WITH_LINUXTHREADS=yes
# make deinstall
# cd /usr/ports/databases/mysql40-server
# make deinstall
# rm -f /etc/my.cnf
# cd /usr/ports/databases/mysql41-server
# make install WITH_CHARSET=euckr WITH_LINUXTHREADS=yes
설치를 정상적으로 마쳤다면 아래 명령어로 MySQLd 를 safe 모드로 실행시키고, 무언가(?)를 fix 합니다. 그 다음 데몬을 사알짝 종료시킵니다.
# mysqld_safe --skip-grant-tables --user=mysql &
[1] 1234
# mysql_fix_privilege_tables --password=ROOT_PASSWORD
# kill -9 1234
[1] 1234
# mysql_fix_privilege_tables --password=ROOT_PASSWORD
# kill -9 1234
자 이제 MySQL 을 시작하고, 백업한 데이터를 각각의 디비에 복원합니다.
# /usr/local/etc/rc.d/mysql-server start
# mysql -pROOT_PASSWORD EACH_DB < EACH_DB.sql
# mysql -pROOT_PASSWORD EACH_DB < EACH_DB.sql
복원을 마쳤으면 MySQL 4.0 에서 MySQL 4.1 로의 업데이트가 끝났습니다. MySQL 4.1 까지 업데이트 하고자 한다면 이까지의 작업만 행하면 됩니다.
이제 MySQL 5.0 으로의 업데이트를 시작합니다. MySQL 4.1 로의 업데이트와는 달리 가볍게 컴파일과 설치만 해주면 됩니다.
# /usr/local/etc/rc.d/mysql-server stop
# cd /usr/ports/databases/mysql41-server
# make deinstall
# cd /usr/ports/databases/mysql41-client
# make deinstall
# cd /usr/ports/databases/mysql50-server
# make install WITH_CHARSET=euckr WITH_LINUXTHREADS=yes
# /usr/local/etc/rc.d/mysql-server start
# cd /usr/ports/databases/mysql41-server
# make deinstall
# cd /usr/ports/databases/mysql41-client
# make deinstall
# cd /usr/ports/databases/mysql50-server
# make install WITH_CHARSET=euckr WITH_LINUXTHREADS=yes
# /usr/local/etc/rc.d/mysql-server start
처음 해보는 업데이트인지라 여러 시행착오도 많았고, 난관도 많았지만 우여곡절 끝에 마무리를 다 지었습니다. 사실 위에 기술한 것 외에 세부적으로 한 것들이 많지만, 시시각각으로 달라지는 것들이라 전부 적지는 않았습니다.
그 중 한가지를 말하자면, 저는 인코딩을 euckr 로 사용하고 있습니다만, 태터툴즈 등을 사용하기 때문에 디비 안의 일부 테이블에는 utf8 자료가 꽤나 들어있습니다. 이렇게 하나의 디비에 euckr 과 utf8 데이터가 모두 들어있다면 백업을 테이블 단위로 하는 것이 현명한 방법입니다. 대신 백업을 하면서 어떤 테이블에 euckr 가 있고 어떤 테이블에 utf8 가 있는지 정도는 미리 알아야 합니다. 복원할 때 --default-character-set=utf8 과 같은 옵션을 주어야 된다는 점을 잊지 마시고요.
전 백업을 잘못해서 MySQL 4.0 만 세번을 다시 깔았는데요. 역시 그 중 한가지를 들어보자면 mysqldump 옵션 중에 --quote-names 옵션을 빼먹어서 나중 복원할때 필드명이 예약어인 것들이 걸리면 에러를 수억개 발생시키곤 했습니다.
처음부터 계획(?)을 확실하게 세워 저처럼 3시간 동안 고생하는 일이 없도록 합시다;
참고 문서 :
http://annyung.oops.org/?m=white&p=mysql41 (AnNyung Official Homepage)
http://krug.or.kr/forums/viewtopic.php?pid=121 (한국 레드햇 사용자 모임 포럼)
http://krug.or.kr/forums/viewtopic.php?pid=121 (한국 레드햇 사용자 모임 포럼)








설치에 참고가 되었습니다 'ㅁ'후후.
참고가 되었다니 다행입니다. 다운그레이드는 역시 약해서.. ^^;
와아.. 초고수..
방한은 언제인가요? 다음번에 연락드리겠습니다.
좋은 도움말 얻고 갑니다.
좋은 도움 되셨다니 기쁘네요. ''a
저도 여기저기서 얻은 정보들인데 자세히 적기 귀찮아 끄적끄적해둔 느낌이 팍팍 나는데.. ^^;