17.4.1.22 복제 및 임시 테이블
binlog_format=ROW
의 경우 다음 단락의 내용은 적용되지 않습니다. 왜냐하면 그 경우 임시 테이블은 복제되지 않기 때문입니다. 그것은 노예로 인한 계획 종료의 경우, 슬레이브의 임시 테이블이 손실 될 수 없다는 것을 의미합니다. 이 절의 나머지는 명령문 기반 또는 혼합 형식 복제를 사용하는 경우에만 적용됩니다. 문베이스 형식을 사용하여 안전하게 로그를 기록 할 수있는 임시 테이블을 사용하는 명령문은 binlog_format
가 STATEMENT
또는 MIXED
때는 항상 슬레이브에 복제 된 임시 테이블을 잃는 것이 문제가 될 수 있습니다 . 열 기반 리플리케이션 및 임시 테이블의 자세한 내용은 임시 테이블의 행 기반 로깅 을 참조하십시오.
임시 테이블을 사용할 때의 안전 슬레이브 종료 슬레이브 서버를 중지하는 경우 (슬레이브 쓰레드뿐만 아니라) 및 슬레이브에서 아직 실행되지 않은 업데이트에서 사용하기 위해 열려있는 임시 테이블을 복제 한 경우 제외하고 임시 테이블은 복제됩니다. 슬레이브 서버를 중지하면 이러한 업데이트가 필요한 임시 테이블은 슬레이브가 다시 시작될 때 사용할 수 없게되어 있습니다. 이 문제를 해결하기 위해 임시 테이블이 열려있는 동안은 노예를 종료하지 마십시오. 대신 다음 단계를 사용하십시오.
STOP SLAVE SQL_THREAD
문을 발행합니다.SHOW STATUS
를 사용하여Slave_open_temp_tables
변수의 값을 확인합니다.값이 0이 아닌 경우, 슬레이브 SQL 쓰레드를
START SLAVE SQL_THREAD
에서 다시 시작하고 나중에 단계를 반복합니다.값이 0이면, mysqladmin shutdown 명령을 실행하여 슬레이브를 중지합니다.
임시 테이블과 복제 옵션 기본적으로 모든 임시 테이블이 복제됩니다. 이것은 해당 --replicate-do-db
, --replicate-do-table
또는 --replicate-wild-do-table
옵션을 사용할 수 있는지 여부에 관계없이 발생합니다. 그러나 --replicate-ignore-table
및 --replicate-wild-ignore-table
옵션은 임시 테이블에서 허용됩니다.
명령문 기반 또는 혼합 형식 복제를 사용할 때 권장되는 작업은 복제하지 않으려 임시 테이블의 이름을 위해서만 사용할 접두어를 지정하고 그 프리픽스를 일치시키는 데 --replicate-wild-ignore-table
옵션을 사용하는 것입니다. 예를 들어, 이러한 모든 테이블에 norep
로 시작하는 이름을 붙여에서 (예를 들어, norepmytable
, norepyourtable
등) 테이블이 복제되는 것을 방지하기 위해 --replicate-wild-ignore-table=norep%
를 사용합니다.