• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 1. 일반적인 설치 가이드
    2. 일반적인 바이너리를 사용하여 MySQL의 Unix / Linux에 설치
    3. Microsoft Windows에 MySQL 설치
    4. OS X에 MySQL 설치
    5. Linux에 MySQL 설치
    6. Unbreakable Linux Network (ULN)를 사용한 MySQL 설치
    7. Solaris 및 OpenSolaris에 MySQL을 설치
    8. FreeBSD에 MySQL 설치
    9. Installing MySQL from Source
    10. 설치 후 설정 및 테스트
    11. MySQL 업그레이드 및 다운 그레이드
    1. MySQL 업그레이드
    2. MySQL 다운 그레이드
    3. 테이블 또는 인덱스 재구성이 필요한지 여부 확인
    4. 테이블 또는 인덱스를 다시 만들거나 복구
    5. MySQL 데이터베이스를 다른 시스템에 복사
    12. 환경 변수
    13. Perl 설치에 대한 설명
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

2.11.4 테이블 또는 인덱스를 다시 만들거나 복구

이 섹션에서는 데이터 형식 또는 문자 집합의 처리 방법에 대한 MySQL의 변경된 테이블 재구성 방법을 설명합니다. 예를 들어, 데이터 정렬 오류가 수정되어 그 데이터 정렬을 사용하는 문자 컬럼의 인덱스를 업데이트하기 위해 테이블​​ 재구성이 필요할 수 있습니다. (예를 들어, 섹션 2.11.3 "테이블 또는 인덱스 재구성이 필요한지 확인" 을 참조하십시오.) CHECK TABLE , mysqlcheck 또는 mysql_upgrade에 의해 실행되는 같은 테이블 확인 작업에 표시된대로 테이블을 복구하거나 업그레이드해야하는 경우가 있습니다.

테이블을 다시 작성하는 방법은 테이블을 덤프하고 다시로드하는 방법과 ALTER TABLE 또는 REPAIR TABLE 을 사용하는 방법이 있습니다. REPAIR TABLE 은 MyISAM , ARCHIVE 및 CSV 의 각 테이블에만 적용됩니다.

참고

바이너리 (in-place) 업그레이드 또는 다운 그레이드 후 MySQL의 다른 버전이 테이블을 처리하지 않기 때문에 테이블을 다시 작성하는 경우 덤프하고 다시로드하는 방법을 사용해야합니다. 업그레이드 또는 다운 그레이드 전에 원래 버전의 MySQL을 사용하여 테이블을 덤프합니다. 다음은 업그레이드 또는 다운 그레이드 후에 테이블을 다시로드합니다.

인덱스를 다시 작성하는 목적만을위한 덤프하고 다시로드하는 방법을 사용하여 테이블을 재구성하는 경우 업그레이드 또는 다운 그레이드하기 전이나 후에도 덤프를 실행할 수 있습니다. 그 경우에도 장전 후에 실시해야합니다.

테이블을 덤프하고 다시로드하여 다시 구축하려면 mysqldump를 사용하여 덤프 파일을 생성하고 mysql에서 파일을 다시로드합니다.

 shell> mysqldump db_name t1 > dump.sql
 shell> mysql db_name < dump.sql

단일 데이터베이스의 모든 테이블을 재구성하는 경우, 데이터베이스 이름을 그 뒤에 테이블 이름없이 지정합니다.

 shell> mysqldump db_name > dump.sql
 shell> mysql db_name < dump.sql

모든 데이터베이스의 모든 테이블을 다시로드하려면 --all-databases 옵션을 사용하십시오.

 shell> mysqldump --all-databases > dump.sql
 shell> mysql < dump.sql

ALTER TABLE 로 테이블을 다시 작성하는 경우는 "null"변경을 사용합니다. 즉 이미 사용하고있는 스토리지 엔진을 사용하도록 테이블을 "변경"하는 ALTER TABLE 문입니다. 예를 들어, t1 이 InnoDB 테이블 인 경우 다음 문을 사용합니다.

 mysql> ALTER TABLE t1 ENGINE = InnoDB;

ALTER TABLE 문에서 지정한 스토리지 엔진을 모르는 경우, SHOW CREATE TABLE 을 사용하여 테이블 정의를 표시합니다.

CHECK TABLE 조작으로 테이블의 업그레이드가 필요하다는 것을 표시하는 데 InnoDB 테이블을 재구성 할 필요가있는 경우는 전술 한 바와 같이 mysqldump를 사용하여 덤프 파일을 생성하고 mysql에서 파일을 다시로드 합니다. CHECK TABLE 조작에 손상이있는 것으로 나타났습니다하거나 InnoDB 가 실패 할 경우 innodb_force_recovery 옵션을 사용하여 InnoDB 를 다시 시작하는 방법 섹션 14.19.2 "InnoDB 복구 강제 실행" 를 참조하십시오. CHECK TABLE 이 발생하고있는 문제의 유형을 이해하려면 섹션 13.7.2.2 "CHECK TABLE 구문」 의 InnoDB 에 대한 참고를 참조하십시오.

MyISAM , ARCHIVE 또는 CSV 테이블은 테이블 확인 작업에 손상이 있는지와 업그레이드가 필요하다는 내용이 포함 된 경우 REPAIR TABLE 을 사용할 수 있습니다. 예를 들어, MyISAM 테이블을 복구하려면 다음 문을 사용합니다.

 mysql> REPAIR TABLE t1;

mysqlcheck --repair 명령 행에서 REPAIR TABLE 문에 대한 액세스를 제공합니다. --databases 옵션 또는 --all-databases 옵션을 각각 사용하여 특정 데이터베이스 또는 모든 데이터베이스의 모든 테이블을 복구 할 수 있기 때문에 테이블 복구 방법으로 더 편리한 경우가 있습니다.

 shell> mysqlcheck --repair --databases db_name ...
 shell> mysqlcheck --repair --all-databases

MySQL 5.1.24에서 Bug # 27877에 대한 수정 ( utf8_general_ci 및 ucs2_general_ci 데이터 정렬을 수정했습니다)에 의해 도입 된 비 호환성은 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 순서를 유지합니다.

  • 테이블 파일을 그대로 남겨 바이너리 업그레이드 후 영향을받는 테이블을 변환하려면 새로운 데이터 정렬을 사용하도록 테이블을 변경합니다. 테이블 t1 에 하나 이상의 문제가있는 utf8 컬럼이 있다고합니다. 테이블을 테이블 수준에서 변환하려면 다음과 같은 명령문을 사용합니다.

     ALTER TABLE t1
     CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
    

    컬럼 별 기반으로 변경을 적용하려면 다음과 같은 명령문을 사용합니다 ( COLLATE 절을 제외하고 먼저 지정되어 컬럼 정의를 반드시 반복합니다).

     ALTER TABLE t1
     MODIFY c1 CHAR (N) CHARACTER SET utf8 COLLATE utf8_general_mysql500_ci;
    
  • 덤프하고 다시로드하는 방법을 사용하여 테이블을 업그레이드하는 경우, mysqldump를 사용하여 테이블을 덤프하고 덤프 파일에서 CREATE TABLE 문을 새로운 데이터 정렬을 사용하도록 변경하여 테이블을 다시로드 합니다.

적절한 변경을하면 CHECK TABLE 은 오류를보고하지 않는 것입니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved