Loading...
MySQL 9.5 Reference Manual 9.5의 17.8.2 Configuring InnoDB for Read-Only Operation의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL data directory가 읽기 전용 미디어에 있을 때, 서버 시작 시 --innodb-read-only configuration option을 활성화하여 InnoDB 테이블을 쿼리할 수 있습니다.
인스턴스를 읽기 전용 작업용으로 준비하려면, 읽기 전용 매체에 저장하기 전에 모든 필요한 정보가 데이터 파일에 flush되었는지 확인해야 합니다. 체인지 버퍼링을 비활성화한 상태( innodb_change_buffering=0)로 서버를 실행하고, slow shutdown을 수행합니다.
전체 MySQL 인스턴스에 대해 읽기 전용 모드를 활성화하려면, 서버 시작 시 다음 configuration option을 지정합니다:
인스턴스가 DVD나 CD와 같은 읽기 전용 미디어에 있거나, /var directory가 모두에게 쓰기 가능하지 않은 경우:
--pid-file=path_on_writeable_media
및
--event-scheduler=disabled
--innodb-temp-data-file-path.
이 option은 InnoDB 임시 테이블스페이스 데이터 파일의 경로, 파일 이름, 파일 크기를 지정합니다. 기본 설정은 ibtmp1:12M:autoextend이며, data directory에 ibtmp1 임시 테이블스페이스 데이터 파일을 생성합니다. 인스턴스를 읽기 전용 작업용으로 준비하려면, innodb_temp_data_file_path를 data directory 외부의 위치로 설정합니다. 경로는 data directory를 기준으로 상대 경로여야 합니다. 예를 들면 다음과 같습니다:
1 --innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
innodb_read_only를 활성화하면 모든 스토리지 엔진에 대해 테이블 생성 및 drop 작업이 방지됩니다. 이러한 작업은 mysql system database의 데이터 사전 테이블을 수정하지만, 해당 테이블은 InnoDB 스토리지 엔진을 사용하며 innodb_read_only가 활성화된 상태에서는 수정할 수 없습니다. 동일한 제한은 ANALYZE TABLE 및
ALTER TABLE tbl_name ENGINE=engine_name과 같이 데이터 사전 테이블을 수정하는 모든 작업에도 적용됩니다.
또한, MySQL 9.5에서는 mysql system database의 다른 테이블도 InnoDB 스토리지 엔진을 사용합니다. 해당 테이블을 읽기 전용으로 만들면, 이를 수정하는 작업에 제한이 발생합니다. 예를 들어, CREATE USER,
GRANT,
REVOKE, 그리고
INSTALL PLUGIN 작업은 읽기 전용 모드에서 허용되지 않습니다.
이 작업 모드는 다음과 같은 상황에 적합합니다:
MySQL 애플리케이션 또는 MySQL 데이터 집합을 DVD나 CD와 같은 읽기 전용 스토리지 미디어로 배포하는 경우.
여러 MySQL 인스턴스가 동일한 data directory를 동시에 쿼리하는 경우로, 일반적으로 데이터 웨어하우징 구성에서 사용됩니다. 이 기법을 사용하여 과도하게 부하가 걸린 MySQL 인스턴스에서 발생할 수 있는 bottleneck을 피하거나, 서로 다른 인스턴스에 대해 서로 다른 configuration option을 사용하여 각각을 특정 종류의 쿼리에 맞게 튜닝할 수 있습니다.
보안 또는 데이터 무결성상의 이유로, 예를 들어 아카이브된 백업 데이터처럼 읽기 전용 상태로 전환된 데이터를 쿼리하는 경우.
참고
이 기능은 읽기 전용 특성에 기반한 순수 성능 향상보다는, 배포와 배치에서의 유연성을 주된 목적으로 합니다. 전체 서버를 읽기 전용으로 만들 필요 없이, 읽기 전용 쿼리의 성능을 튜닝하는 방법에 대해서는 Section 10.5.3, “Optimizing InnoDB Read-Only Transactions”을 참조하십시오.
--innodb-read-only option을 통해 서버를 읽기 전용 모드로 실행하면, 특정 InnoDB 기능과 컴포넌트가 축소되거나 완전히 비활성화됩니다:
어떠한 change buffering도 수행되지 않으며, 특히 체인지 버퍼로부터의 머지가 발생하지 않습니다. 인스턴스를 읽기 전용 작업용으로 준비할 때 체인지 버퍼가 비어 있도록 하려면, 체인지 버퍼링을 비활성화
( innodb_change_buffering=0)하고, 먼저 slow shutdown을 수행하십시오.
시작 시 crash recovery phase가 없습니다. 인스턴스는 읽기 전용 상태로 전환되기 전에 slow shutdown을 수행해야 합니다.
대부분의 백그라운드 스레드가 비활성화됩니다. 읽기 I/O 스레드는 유지되며, 읽기 전용 모드에서 허용되는 임시 파일에 대한 쓰기를 위해 쓰기 I/O 스레드와 페이지 플러시 코디네이터 스레드도 유지됩니다. 또한 버퍼 풀의 온라인 리사이징을 가능하게 하기 위해 버퍼 풀 리사이즈 스레드도 활성 상태로 남아 있습니다.
데드락 정보, 모니터 출력 등의 정보는 임시 파일에 기록되지 않습니다. 그 결과, SHOW ENGINE INNODB STATUS는 아무 출력도 생성하지 않습니다.
일반적으로 쓰기 작업의 동작을 변경하는 configuration option 설정 변경은, 서버가 읽기 전용 모드일 때는 아무 효과가 없습니다.
MVCC 처리는 isolation levels을 강제하기 위해 비활성화됩니다. update와 delete가 불가능하기 때문에, 모든 쿼리는 레코드의 최신 버전을 읽습니다.
undo log는 사용되지 않습니다. innodb_undo_directory configuration option에 대한 설정을 비활성화하십시오.
17.8.1 InnoDB Startup Configuration
17.8.3 InnoDB Buffer Pool Configuration