Loading...
MySQL 9.5 Reference Manual 9.5의 19.4.4 Using Replication with Different Source and Replica Storage Engines의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
source의 original table과 replica에 복제된 table이 서로 다른 storage engine type을 사용하더라도 replication process에는 영향을 주지 않습니다. 사실 default_storage_engine system variable은 복제되지 않습니다.
이는 서로 다른 replication 시나리오에서 서로 다른 engine type을 활용할 수 있다는 점에서 replication process에 여러 이점을 제공합니다. 예를 들어, 일반적인 scale-out 시나리오( Section 19.4.5, “Using Replication for Scale-Out” 참고)에서는 source에서 트랜잭션 기능을 활용하기 위해 InnoDB table을 사용하지만, replica에서는 데이터가 읽기 전용이므로 트랜잭션 지원이 필요하지 않아 MyISAM을 사용할 수 있습니다. 데이터 로깅 환경에서 replication을 사용할 때는 replica에서 Archive storage engine을 사용하고자 할 수 있습니다.
source와 replica에서 서로 다른 engine을 구성하는 방법은 초기 replication process를 어떻게 설정했는지에 따라 달라집니다:
또 다른 mysqldump 대안은, dump를 사용해 replica에 데이터를 구축하기 전에 replica에서 사용하고 싶지 않은 engine type을 비활성화하는 것입니다. 예를 들어, replica에서 --skip-federated option을 추가해 FEDERATED engine을 비활성화할 수 있습니다. 생성될 table에 대해 특정 engine이 존재하지 않으면 MySQL은 기본 engine type(일반적으로 InnoDB)을 사용합니다. (이는 NO_ENGINE_SUBSTITUTION SQL mode가 활성화되어 있지 않아야 합니다.) 이러한 방식으로 추가 engine을 비활성화하고자 한다면, replica에서 사용하려는 engine만 지원하는 특수 바이너리를 빌드하여 사용하는 것을 고려할 수 있습니다.
raw data file(바이너리 백업)을 사용해 replica를 설정하는 경우에는 초기 table format을 변경할 수 없습니다. 대신 replica가 시작된 후 ALTER TABLE을 사용해 table type을 변경하십시오.
source에 아직 table이 없는 새로운 source/replica replication 구성을 하는 경우, 새 table을 생성할 때 engine type을 지정하지 마십시오.
이미 replication solution이 실행 중이며 기존 table을 다른 engine type으로 변환하려는 경우 다음 단계들을 따르십시오:
1mysql> STOP REPLICA;
이렇게 하면 중단 없이 engine type을 변경할 수 있습니다.
변경할 각 table에 대해 ALTER TABLE ... ENGINE='engine_type'을 실행합니다.
replication process를 다시 시작합니다:
1mysql> START REPLICA;
default_storage_engine variable은 복제되지 않지만, engine specification을 포함하는 CREATE TABLE 및 ALTER TABLE statement는 replica로 올바르게 복제된다는 점을 유의해야 합니다. 예를 들어, CSV table에 대해 다음 statement를 실행하면:
1mysql> ALTER TABLE csvtable ENGINE='MyISAM';
이 statement는 복제되며, replica에서 해당 table의 engine type은 InnoDB로 변환됩니다. 이는 replica에서 table type을 CSV 이외의 engine으로 미리 변경했더라도 마찬가지입니다. source와 replica에서 engine 차이를 유지하려면, 새 table을 생성할 때 source에서 default_storage_engine variable을 사용하는 데 주의해야 합니다. 예를 들어, 다음과 같이 사용하는 대신:
1mysql> CREATE TABLE tablea (columna int) Engine=MyISAM;
다음 형식을 사용하십시오:
1mysql> SET default_storage_engine=MyISAM; 2mysql> CREATE TABLE tablea (columna int);
복제 시 default_storage_engine variable은 무시되며, replica에서 CREATE TABLE statement는 replica의 기본 engine을 사용하여 실행됩니다.
19.4.3 Monitoring Row-based Replication
19.4.5 Using Replication for Scale-Out