17.3.2 다른 Master 및 Slave 스토리지 엔진에서 복제
복제 프로세스는 마스터 소스 테이블과 슬레이브에서 대상 테이블이 다른 엔진 유형을 사용하고 있는지 여부는 중요하지 않습니다. 실제로 default_storage_engine 및 storage_engine 시스템 변수는 복제되지 않습니다.
이것은 다른 복제 시나리오에 다른 엔진 타입을 이용할 수 있다는 점에서 복제 프로세스에 몇 가지 장점을 제공합니다. 예를 들어, 전형적인 확장 시나리오 ( 섹션 17.3.3 "확장을 위해 복제 사용" 을 참조하십시오) 마스터에서 트랜잭션 기능을 이용하기 위해서는 InnoDB 테이블을 사용하여 슬레이브 는 데이터를 읽을만으로 트랜잭션 지원이 필요 없기 때문에 MyISAM 을 사용합니다. 데이터 로깅 환경에서 복제를 사용하는 경우, 슬레이브에서 Archive 스토리지 엔진을 사용하는 것이 좋습니다.
마스터 및 슬레이브에서 서로 다른 엔진을 구성할지 여부는 초기 복제 프로세스를 어떻게 설정하는지에 따라 달라집니다.
mysqldump를 사용하여 마스터 데이터베이스 스냅 샷을 생성 한 경우 덤프 파일 텍스트를 편집하여 각 테이블에서 사용되는 엔진 유형을 변경할 수 있습니다.
mysqldump의 다른 사용 방법은 슬레이브에서 사용하지 않으 엔진 타입을 해제하고이 덤프를 사용하여 슬레이브에 데이터를 구축하는 것입니다. 예를 들어,
FEDERATED엔진을 해제하기 위해--skip-federated옵션을 슬레이브에 추가 할 수 있습니다. 작성하는 테이블에 특정 엔진이 존재하지 않는 경우, MySQL은 기본 엔진 유형 (일반적으로MyISAM)를 사용합니다. (여기에는NO_ENGINE_SUBSTITUTIONSQL 모드가 활성화되지 않은 것이 필요합니다.)이 방법으로 다른 엔진을 해제하려면 필요한 엔진만을 지원하는 특별한 바이너리를 구축하고 슬레이브로 사용하는 것이 고려하는 것이 좋습니다.로우 데이터 파일 (바이너리 백업)을 사용하여 슬레이브를 설치하는 경우 첫 번째 테이블 형식을 변경할 수 없습니다. 대신에 노예가 시작된 후에
ALTER TABLE을 사용하여 테이블 유형을 변경하십시오.새로운 마스터 / 슬레이브 복제 설정에서 마스터에 현재 테이블이 없으면 새 테이블을 만들 때 엔진 타입을 지정하는 것은 피하십시오.
복제 솔루션을 이미 실행하고 기존의 테이블을 다른 엔진 타입으로 변경하려면 다음 단계를 따르십시오.
슬레이브가 복제 업데이트를 수행하는 것을 중지합니다.
mysql>STOP SLAVE;이렇게하면 중단없이 엔진 유형을 변경 할 수 있습니다.
변경 테이블마다
ALTER TABLE ... ENGINE='를 실행합니다.engine_type'슬레이브 복제 프로세스를 다시 시작합니다.
mysql>START SLAVE;
default_storage_engine 변수는 복제되지 않지만 엔진 명세를 가진 CREATE TABLE 및 ALTER TABLE 문은 슬레이브에 올바르게 복제됩니다. 예를 들어, CSV 테이블이있는 경우이를 수행합니다.
mysql> ALTER TABLE csvtable Engine='MyISAM';
위의 문장은 슬레이브에 복제 된 슬레이브에서 엔진 유형이 MyISAM 으로 변환됩니다 (이전에 슬레이브의 엔진 타입을 CSV 이외의 엔진으로 변경 한 경우에도). 마스터와 슬레이브로 엔진의 차이를 유지하려면 새 테이블을 만들 때 default_storage_engine 변수를 신중하게 사용하십시오. 예를 들어, 다음 대신 :
mysql> CREATE TABLE tablea (columna int) Engine=MyISAM;
이 형식을 사용하십시오.
mysql>SET default_storage_engine=MyISAM;mysql>CREATE TABLE tablea (columna int);
복제 될 때 default_storage_engine 변수는 무시되고 CREATE TABLE 문은 노예의 기본 엔진을 사용하여 슬레이브에서 실행됩니다.