실시간 작업 사이트에서 MyISAM 테이블을 InnoDB로 어떻게 변환해야합니까? 작업 메뉴 "스토리지 엔진"에서 phpmyadmin을 InnoDB로 변경해야합니까? 변환하는 동안 모든 테이블을 잠글까요?라이브 사이트에서 MyISAM 테이블을 InnoDB로 마이그레이션
답변
일할 수도 있지만 테이블 복사본을 만들고 복사본의 저장소 엔진 변경 작업을 시도하는 것이 좋습니다. 또한 당신에게 작업에 필요한 시간의 추정치를 줄 것이다
.
은 더 나은 귀하의 응용 프로그램의 복사본을 그렇게하면하고는 새로운 스토리지 엔진을 전혀 작동할지 여부 광범위한 점검을 만들 것입니다.
pt-online-schema-change를 확인하십시오. 그것은 잠시 테이블을 차단 정도 두 테이블의 이름을 바꾸려면이 답변에 https://dba.stackexchange.com/questions/60570/best-way-to-add-a-new-column-to-a-large-table-mysql-myisam/60576#60576
을 예를 참조하십시오.
하지만 기본 키가 없습니다. – Nikola
고유 한 색인이 있습니까? – akuzminsky
당신은 실제로 테이블에 쓰기 잠금을 얻을 것이다. 새 테이블을 만들고 복사하는 동안 테이블에서 계속 읽을 수 있습니다. 문서에서
ALTER TABLE의 : ALTER 표가 실행동안 (예외가 곧 지적과), 원래의 테이블이 다른 세션에 의해 읽을 수 있습니다. 업데이트 및 새 테이블이 준비 될 때까지 ALTER 표 작업이 가 정지되어 시작된 후 시작 테이블에 를 기록 후 어떤없이 새 테이블로 재 업데이트를 실패 자동 있습니다. ...
언급 된 예외 이전 ALTER 표 블록 이전 파일을 삭제, 테이블 .frm 파일의 새로운 버전을 설치할 준비가 지점에서 이 (그냥 쓰기) 읽고 있다는 것입니다, 테이블 및 테이블 정의 캐시에서 오래된 테이블 구조를 지우십시오. 이 시점에서 배타적 잠금을 획득해야합니다. 이렇게하기 위해 현재 독자가 완료 할 때까지 을 기다리고 새로운 읽기 (및 쓰기)를 차단합니다.
그래서 테이블 복사와 phpmyadmin을 사용하여 InnoDB로 변환하는 방법은 무엇입니까? – Nikola
@Nikola - 단계별로 수행하십시오. 복사 한 다음 엔진을 변경하십시오. – blue