14.3.1 읽기 전용 작업에 대한 InnoDB의 구성
현재는 서버를 시작할 때 --innodb-read-only
구성 옵션을 사용하면 MySQL 데이터 디렉토리가 읽기 전용 미디어에있는 InnoDB
테이블에서 쿼리를 실행할 수 있습니다.
사용 방법
읽기 작업을 위해 인스턴스를 준비하려면 필요한 모든 정보가 읽기 전용 미디어에 저장되기 전에 데이터 파일에 플래시 되는 것을 확인합니다. 변경 버퍼가 비활성화되어있다 ( innodb_change_buffering=0
) 서버를 실행하고 저속 종료 를 수행합니다.
MySQL 인스턴스 전체 읽기 전용 모드를 활성화하려면 서버를 시작할 때 다음 구성 옵션을 지정합니다.
--innodb-read-only=1
인스턴스가 DVD 나 CD 같은 읽기 전용 미디어에있는 경우 또는
/var
디렉토리가 모든 사용자가 쓸 수없는 경우 :--pid-file=
및path_on_writeable_media
--event-scheduler=disabled
사용 시나리오
이 작동 모드는 다음과 같은 상황에 적합합니다.
DVD 나 CD 등의 읽기 전용 저장 매체에 MySQL 응용 프로그램 또는 MySQL 데이터 세트를 배포한다.
(일반적으로 데이터웨어 하우스 구성에서) 같은 데이터 디렉토리에서 동시에 쿼리를 실행하는 여러 MySQL 인스턴스. 이 방법을 사용하면 비용이 많이 드는 MySQL 인스턴스에서 발생할 수있는 병목 현상 을 피하거나 다양한 인스턴스에 대해 다양한 구성 옵션을 사용하여 특정 유형의 쿼리를 개별적으로 조정 할 수있는 경우가 있습니다.
안전성 또는 무결성 이유로 읽기 전용 상태 데이터 (보관 된 백업 데이터 등)의 쿼리를 실행한다.
이 기능의 목적은 읽기 전용의 측면에 근거한 삶의 성능이 아니라 주로 배포 및 배포를위한 유연성입니다. 전체 서버를 읽기 전용으로 할 필요없이 읽기 전용 쿼리의 성능을 조정하는 방법은 섹션 14.13.14 "InnoDB의 읽기 전용 트랜잭션 최적화" 를 참조하십시오.
동작
--innodb-read-only
옵션을 사용하여 서버가 읽기 전용 모드로 실행되면 특정 InnoDB
기능 및 구성 요소가 감소하거나 완전히 비활성화되기도합니다.
변경 버퍼 (특히 변경 버퍼에서 병합)은 실행되지 않습니다. 읽기 전용 작업에 인스턴스를 준비 할 때 변경 버퍼가 비어 있는지 확인하려면 변경 버퍼를 해제하고 (
innodb_change_buffering=0
) 먼저 저속 종료 를 수행합니다.시작할 때 충돌 복구 단계가 없습니다. 인스턴스를 읽기 전용 상태로하기 전에 저속 종료 가 실행되고 있어야합니다.
읽기 전용 작업에서는 Redo 로그 를 사용하지 않기 때문에 인스턴스를 읽기 전용으로하기 전에
innodb_log_file_size
을 최소한의 크기 (1M 바이트)로 설정할 수 있습니다.I / O 읽기 스레드가 아닌 백그라운드 스레드가 모두 해제됩니다. 그 결과, 읽기 전용 인스턴스에서 교착 상태 가 발생할 가능성이 없어집니다.
교착 상태에 대한 정보와 모니터 출력 등은 임시 파일에 기록되지 않습니다. 그 결과,
SHOW ENGINE INNODB STATUS
출력이 생성되지 않습니다.--innodb-read-only
를 사용하여 MySQL 서버가 시작되고 있지만 아직 데이터 디렉토리가 쓰기 가능한 미디어에있는 경우 root 사용자가 계속해서GRANT
와REVOKE
등의 DCL 작업을 수행 할 수 있습니다.구성 옵션의 설정을 변경하면 일반적으로 쓰기 작업의 동작이 변경되지만 서버가 읽기 전용 모드로 설정되어있는 경우 부작용이 없습니다.
격리 수준 을 강제로 적용하는 MVCC 처리가 비활성화됩니다. 업데이트하거나 삭제할 수 없기 때문에 모든 쿼리에서 최신 버전의 레코드를 읽습니다.
Undo 로그 는 사용되지 않습니다.
innodb_undo_tablespaces
및innodb_undo_directory
구성 옵션의 설정을 해제합니다.