2011-04-11 1 views
0

Django와 MySql에서 실행되는 웹 사이트가 있습니다.MySql : MyISAM 및 InnoDB 혼합으로 인해 무결성 제한이 실패합니다. 어떻게 안전하게 해결할 수 있습니까?

db 테이블의 일부는 엔진으로 InnoDB를 사용하고 일부는 MyISAM을 사용합니다.

특별한 이유는 없습니다. 이 프로젝트는 오래 전에 시작되었으며 구성 변경으로 인해 발생했다고 생각합니다.

InnoDB FK가 MyISAM 테이블을 참조 할 때 어떤 무결성 제약 조건이 실패하게됩니다. 테이블을 MyISAM에서 InnoDB로 바꾸면 문제가 해결됩니다.

제 사이트에서 제작 중입니다. 이미 테이블이 혼합되어 있습니다. 많은 테이블이 있습니다.

이 문제를 해결할 수있는 깨끗하고 안전한 방법이 있습니까? 모든 MyISAM 테이블을 InnoDB로 변경해야합니까? 그렇게 할 위험이 있습니까? 당신의 도움이

답변

2

에 미리

덕분에 당신은 확실히 웹 사이트를 오프라인과 이노 디비에 MyISAM 테이블을 변환 할 수 있습니다. (물론 데이터베이스를 먼저 백업하십시오.)

프로덕션 웹 사이트의 품질에 큰 위험이 있지만 테이블의 스토리지 엔진은 변경되지 않습니다. 시스템이 운영되는 동안 데이터베이스 무결성 제약 조건을 적용하기 시작했습니다. 제약 조건을 적용하려면 많은 데이터 복구 작업이 필요합니다.

이 시스템의 섀도 복사본 (웹 사이트 및 DB)을 작성하고 모든 변경 작업을 신중하게 진행하는 것이 가장 바람직합니다. 섀도 복사본에서 수행하는 명령 및 구성 변경 사항을 추적하여 작동중인 것으로 판명되면 다시 라이브 복사본에서 수행 할 수 있습니다. 그러나 그들이 일하지 않을 가능성이 있습니다.

가상 머신 시대에는 섀도 복사본이 쉽습니다.