2.11.3 테이블 또는 인덱스 재구성이 필요한지 여부 확인
바이너리 업그레이드 또는 바이너리 다운 그레이드는 테이블을 덤프하고 다시로드하지 않고 버전의 MySQL을 기존 버전에 "in-place"에서 설치합니다.
기존 버전의 서버가 동작하고있는 경우는 그것을 중지합니다.
다른 버전의 MySQL을 설치합니다. 새 버전이 원래 버전보다 최신 경우 업그레이드가 오래된 경우 다운 그레이드됩니다.
새로운 버전의 서버를 시작합니다.
종종 MySQL의 이전 버전의 테이블은 새 버전에서 문제없이 사용할 수 있습니다. 그러나이 섹션에서 설명한대로 테이블 또는 테이블의 인덱스를 다시 작성해야 할 것 같은 변경이 발생할 수도 있습니다. 여기에서 설명하는 문제 중 하나의 영향을받는 테이블이있는 경우는 필요에 따라 테이블 또는 인덱스를 섹션 2.11.4 "테이블 또는 인덱스를 다시 만들거나 복구" 에서 설명한 절차를 사용하여 다시 구축합니다.
테이블의 비 호환성
ARCHIVE
테이블을 포함하는 MySQL 5.0 설치에서 MySQL 5.1로 바이너리 업그레이드 후이 테이블에 액세스하면 mysql_upgrade 또는 CHECK TABLE ... FOR UPGRADE
를 실행되어있는 경우에도 서버가 충돌합니다. 이 문제를 해결하려면 업그레이드 전에 mysqldump를 사용하여 모든 ARCHIVE
테이블을 덤프하고 업그레이드 후에는 MySQL 5.1에 다시로드합니다. MySQL 5.1에서 5.0으로 바이너리 다운 그레이드에서도 같은 문제가 발생합니다.
업그레이드 문제는 MySQL 5.6.4에서 수정되어 있습니다. 서버는 MySQL 5.0에서 작성된 ARCHIVE
테이블을 엽니 다. 그러나 계속 권장되는 업그레이드 절차는 업그레이드 전에 5.0 ARCHIVE
테이블을 덤프하고 업그레이드 후 다시로드하는 방법입니다.
인덱스의 비 호환성
MySQL 5.6.3에서는 ROW_FORMAT=DYNAMIC
또는 ROW_FORMAT=COMPRESSED
을 사용하는 InnoDB
테이블은 인덱스 프리픽스 키의 길이 제한은 767 바이트에서 3072 바이트로 증가했습니다. 자세한 내용은 섹션 14.6.7 "InnoDB 테이블에서의 제한" 을 참조하십시오. 이 변경은 MySQL 5.5.14에 포팅되어 있습니다. 이러한 이상 릴리스 중 하나에서 길이 제한이 짧은 이전 버전으로 다운 그레이드 할 경우 인덱스 프리픽스 키를 767 바이트로 잘릴 수 있습니다. 그렇지 않으면 다운 그레이드가 실패 할 수 있습니다. 이 문제는 다운 그레이드 서버에서 구성 옵션 innodb_large_prefix
이 유효했던 경우에만 발생할 수 있습니다.
테이블의 덤프 및 리로드를 실행하지 않고 바이너리 업그레이드를 수행하는 경우, MySQL 4.1에서 5.1로 직접 업그레이드 할 수 없습니다. 이것은 MySQL 5.0의 MyISAM
테이블 인덱스의 형식과 호환되지 않는 변경에 의한 것입니다. MySQL 4.1에서 5.0으로 업그레이드하고 모든 MyISAM
테이블을 복구하십시오. 그 후, MySQL 5.0에서 5.1로 업그레이드. 테이블을 확인하고 복구합니다.
문자 세트 또는 데이터 정렬 처리의 변경으로 인해 문자 집합의 순서가 변경 될 수 있으며, 따라서 영향을받는 문자 세트 또는 데이터 정렬을 사용하는 인덱스 항목의 순서가 잘못 될 수 있습니다. 이러한 변경에서 몇 가지 문제가 발생할 수 있습니다.
비교 결과가 이전의 결과와 다른
인덱스 항목의 순서 지정이 잘못되어 일부 인덱스 값을 찾을 수 없습니다
ORDER BY
결과의 순서화가 잘못CHECK TABLE
에 의해보고되는 테이블을 복구 할 필요가있다
이러한 문제의 해결 방법은 인덱스를 삭제하고 다시 만들거나 전체 테이블을 덤프하고 다시로드하면 영향을받는 문자 세트 또는 데이터 정렬을 사용하는 인덱스를 다시 작성하는 것입니다. 경우에 따라서는 영향을받는 컬럼을 변경하여 다른 데이터 정렬을 사용하도록 할 수 있습니다. 인덱스 재 작성 내용은 섹션 2.11.4 "테이블 또는 인덱스를 다시 만들거나 복구" 를 참조하십시오.
다시 구축해야하는 인덱스가 테이블에 있는지 여부를 확인하려면 다음 목록을 참조하십시오. 이 목록은 인덱스의 재 구축이 필요한 문자 집합 또는 데이터 정렬 변경이 도입 된 MySQL 버전을 보여줍니다. 각 항목은 변경 한 버전과 그 변경의 영향을받는 문자 세트 또는 데이터 정렬을 보여줍니다. 변경이 특정 버그 리포트에 연결된 경우 버그 번호가 표시되어 있습니다.
이 목록은 바이너리 업그레이드 및 바이너리 다운 그레이드에 모두 적용됩니다. 예를 들어, Bug # 27877는 MySQL 5.1.24에서 수정 되었기 때문에 5.1.24 이전 버전에서 5.1.24 이상 버전으로 업그레이드 및 5.1.24 이상에서 5.1.24 이전 버전으로 다운 그레이드 에 적용됩니다.
많은 경우 CHECK TABLE ... FOR UPGRADE
를 사용하여 인덱스를 다시 작성해야하는 테이블을 식별 할 수 있습니다. 다음 메시지가보고됩니다.
Table upgrade required. Please do "REPAIR TABLE`tbl_name`"or dump / reload to fix it!
이러한 경우에는 mysqlcheck --check-upgrade 또는 mysql_upgrade도 사용할 수 있습니다. 이들은 CHECK TABLE
을 실행합니다. 그러나 CHECK TABLE
을 사용할 수는 다운 그레이드가 아닌 업그레이드 뒤뿐입니다. 또한 CHECK TABLE
은 모든 스토리지 엔진에 적용 할 수있는 것은 없습니다. CHECK TABLE
가 지원하는 스토리지 엔진 자세한 내용은 섹션 13.7.2.2 "CHECK TABLE 구문" 을 참조하십시오.
이러한 변경으로 인해 인덱스의 재 구축이 필요합니다.
MySQL 5.1.24 (Bug # 27877)
'ß'
LATIN SMALL LETTER SHARP S (독일어)를 포함한 열utf8_general_ci
또는ucs2_general_ci
데이터 정렬을 사용하는 인덱스에 영향을줍니다. 이 버그 수정은 원래 데이터 정렬 오류가 수정되었습니다했지만'ß'
가 이전 다르다는 비교 결과였다 문자 같다는 비교 결과가된다는 비 호환성이 도입되었습니다.영향을받는 테이블은 MySQL 5.1.30에서
CHECK TABLE ... FOR UPGRADE
검출 할 수 있습니다 (Bug # 40053를 참조하십시오).이 문제의 해결 방법은 MySQL 5.1.62,5.5.21 및 5.6.5에서 구현되어 있습니다. 해결 방법은 영향을받는 열을
utf8_general_mysql500_ci
및ucs2_general_mysql500_ci
데이터 정렬을 사용하도록 변경할 수 있습니다. 이 데이터 정렬은 원래 5.1.24 이전utf8_general_ci
및ucs2_general_ci
순서를 유지합니다.MySQL 5.0.48,5.1.23 (Bug # 27562)
'`'
GRAVE ACCENT,'['
LEFT SQUARE BRACKET,'\'
REVERSE SOLIDUS,']'
RIGHT SQUARE BRACKET,'~'
TILDE 중 하나의 문자를 포함하는 컬럼에서ascii_general_ci
데이터 정렬을 사용하는 인덱스에 영향이 있습니다영향을받는 테이블은 MySQL 5.1.29에서
CHECK TABLE ... FOR UPGRADE
검출 할 수 있습니다 (Bug # 39585를 참조하십시오).MySQL 5.0.48,5.1.21 (Bug # 29461)
eucjpms
,euc_kr
,gb2312
,latin7
,macce
,ujis
중 하나의 문자 집합을 사용하는 컬럼의 인덱스에 영향이 있습니다영향을받는 테이블은 MySQL 5.1.29에서
CHECK TABLE ... FOR UPGRADE
검출 할 수 있습니다 (Bug # 39585를 참조하십시오).