MySQL 바이너리 로그-테이블 건너 뛰기


9

이진 로그에서 특정 테이블을 건너 뛸 수있는 방법이 있습니까?

야간 백업 간의 증분 백업 전략으로 구성된 이진 로그가 있습니다. 그러나 배치 프로세스 (70GB 테이블)에서 매일 밤 업데이트 할 거대한 참조 테이블이 하나 있습니다. 이 테이블은 읽기 전용이며을 사용하여 매일 밤 업데이트됩니다 mysqlimport.

이 참조 전용 테이블의 업데이트 프로세스 중에 이진 로그는 상당히 심각한 지연을 유발합니다 (특히 전체 70GB 업데이트를 수행 할 때). 기본적으로 70GB를 두 번해야합니다. 왝.

참조 테이블은 현재 MyISAM을 사용하고 있습니다 (InoDB를로드하려고 시도했기 때문에 MyISAM을 사용해보십시오).


이 DB 서버는 독립형 DB 서버입니까? 이 DB 서버는 마스터 또는 슬레이브입니까?
RolandoMySQLDBA

답변:


9

이진 로그에서 테이블을 무시하는 mysql 옵션은 없습니다.

테이블을 별도의 데이터베이스로 옮길 수 있으면 binlog-ignore-db 옵션을 사용할 수 있지만 여기에는 gotchas가 있습니다. MySQL이 복제 규칙을 평가하는 방법을 이해해야합니다 .

mysqlimport 대신 데이터를로드하기 위해 랩퍼 스크립트를 작성할 수있는 경우 (맨 페이지에 LOAD DATA INFILE에 대한 명령 행 인터페이스라고 표시) 데이터를 가져 오는 사용자가 SUPER 권한을 가질 수있는 경우 sql_log_bin 세션 변수를 사용할 수 있습니다 처럼:

    SET @@session.sql_log_bin=0;
    LOAD DATA INFILE 'file_name' 
      -- other LOAD DATA INFILE options ;
    SET @@session.sql_log_bin=1;

현재 세션에 대한 이진 로깅을 비활성화하고 데이터를로드 한 다음 이진 로깅을 다시 활성화합니다.


로드 프로세스 중에 바이너리 로깅을 사용하지 않도록 설정하십시오.
David Parks

3

당신이 사용할 수있는 --replicate-ignore-table=db_name.tbl_name

자세한 내용은 http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table 을 참조하십시오.


6
이것의 문제점은 replicate-ignore-table이 슬레이브 설정이므로 마스터가 많은 binlog 항목을 생성하여 슬레이브로 전송하고 (프로세스에서 대역폭 / 공간을 먹음) 무시해야한다는 것입니다. 처음에는 해당 항목을 생성하지 않는 것이 훨씬 더 효율적입니다.
SVD
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.