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_SUBSTITUTION
SQL 모드가 활성화되지 않은 것이 필요합니다.)이 방법으로 다른 엔진을 해제하려면 필요한 엔진만을 지원하는 특별한 바이너리를 구축하고 슬레이브로 사용하는 것이 고려하는 것이 좋습니다.로우 데이터 파일 (바이너리 백업)을 사용하여 슬레이브를 설치하는 경우 첫 번째 테이블 형식을 변경할 수 없습니다. 대신에 노예가 시작된 후에
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
문은 노예의 기본 엔진을 사용하여 슬레이브에서 실행됩니다.