1. MySQL서버를 정지한다.
2.바이너리를 교체한다.
3.메이저 버전업의 경우에는 mysql_fix_privilege_tables 명령어(또는 mysql_upgrade명령어)를 실행한다.
4.replication이나 NDB를 사용하고 있는 경우에는 전 서버의 버전을 맞추어놓는다.
mysql_fix_privilege_tables명령어 옵션
--verbose 상세표시. 이것을 붙여서 사용하는 것을 추천한다. 붙이지 않으면 변경되었나 확인불가
--bindir= MySQL명령어위치
--basedir= MySQL인스톨 디렉토리의 지정
--user= MySQL서버에 접속할 때 사용하는 사용자명
--password= MySQL서버에 접속할 때 사용하는 패스워드
--host= MySQL서버 지정
--port= MySQL서버 포트 지정
--socket= MySQL서버의 소켓파일 지정
--database= 변경하는 데이터베이스 지정. 보통은 mysql (이 옵션을 사용하는 경우는 드물듯.)
--sql 메세지에는 SQL문장만 표시
--no-defaults my.cnf무시. 반드시 처음에 오는 인수여야한다.
--defaults-file= 지정한 my.cnf만을 읽어들임. 반드시 처음에 오는 인수여야한다.
--defaults-extra-file= 지정한 my.cnf을 추가해서 읽어들임. 반드시 처음에 오는 인수여야한다.
위의 명령어를 쓸 때는 아래의 내용을 주의해야 한다.
1. my.cnf [mysql_install_db]그룹을 읽어들인다.
2. my.cnf [mysql_fix_privilege_tables]그룹을 읽어들인다.
3. mysql, my_print_defaults 명령어를 호출한다. (basedir, bindir를 단서로 찾는다)
4. mysql_fix_privilege_tables.sql파일을 호출한다. (basedir를 단서로 찾는다)
5. mysql_fix_privilege_tables.sql파일은 보통 share/mysql/디렉토리에 존재한다. (sql문이 있다.)
이 밖에 주의해야 할 사항은 버전간의 언어처리나 미묘한 Storage Engine의 변경이다.
윈도우즈에 있어서 mysql_fix_privilege_tables
mysql_fix_privilege_tables은 쉘 스크립트이다. 따라서 윈도우즈에서는 동작하지 않는다.
윈도우즈에서는 SQL문을 실행해서 권한 테이블을 변경한다.
윈도우즈에서 MySQL업그레이드
dos>cd c:\mysql
dos>bin\mysql --force mysql <>
Storage Engine변경에 있어서 주의할점
마이너 버전업의 경우에는 미묘하게 Storage Engine에 수정이 가해진 경우가 있다.
현재 아래의 내용을 주의.
4.1이하에서 5.0이상으로 변경하는 경우
1.TEXT필드 인덱스가 바뀌었다.
>CHECK TABLE [FOR UPGRADE]를 실행해서 에러가 나오는 지 확인(에러가 없는 경우도 있다. )
>에러가 나오면 MyISAM테이블의 경우 REPAIR TABLE를 실행. InnoDB테이블의 경우에는 테이블 데이터의 dump와 import를 실시
2.DECIMAL 내부처리가 바뀌었다.
>CHECK TABLE[FOR UPGRADE]를 실행해서 에러가 나오는 지 확인.
3.MyISAM테이블의 RAID옵션이 없어졌다.
>테이블 데이터를 dump한 다음에 업그레이드 그리고 데이터를 import한다.
mysql_upgrade명령어/mysqlcheck 명령어
MySQL 5.0.19부터 mysql_upgrade라는 명령어가 추가되었다.(5.0.19 ~5.0.22는 쉘 스크립트, 5.0.23부터는 c로 작성되었다.) 이것은 내부에서 다음과 같은 처리를 하는 명령어이다.
mysql_upgrade명령어의 내부처리
shell$> mysqlcheck --check-upgrade --all-databases --auto-repair
shell$> mysql_fix_privilege_tables --silent
mysqlcheck옵션은 다음과 같다.
1. --check-upgrade
CHECK TABLE FOR UPGRADE를 실행(FOR UPGRADE는 MySQL 5.0.19에서 추가됨)
>MySQL 4.1과 5.0에서는 InnoDB, MyISAM에서 TEXT 필드의 인덱스순서를 확인한다.
>MySQL 5.0.3과 5.0.5에서는 DECIMAL 저장방식이 바뀌었으므로 확인한다.
2. --auto-repaire
테이블 파손의 경우에 REPAIR TABLE를 실행한다.
MySQL 4.1에서 5.0이상으로 업그레이드 할 경우에는 mysql_upgrade명령어를 실행하면 되는 것로 되어있다. 또 mysql_upgrade는 my.cnf에서의 [mysql_upgrade]그룹을 읽어들이는 것을 주의하길 바란다.
MySQL 5.0.24/5.1.12-beta의 경우는 mysql_upgrade종료시 데이터 디렉토리에 mysql_upgrade_info라는 파일이 생성된다. 따라서 데이터 디렉토리에 대한 작성권한을 가진 계정으로 mysql_upgrade를 실행해야한다.