sync_relay_log
sync_relay_log를 1로 설정하면 수신된 각 트랜잭션이 디스크에 기록된 후 릴레이 로그를 디스크에 동기화하도록 복제 I/O 스레드에 지시합니다.
즉 성능은 줄이되 안정성을 높이는 방법입니다. 가능하면 1로 설정을 권고합니다. 0이나 다른 숫자로 바꾸면 성능이 좋아지긴 합니다. 이건 선택적인 문제이기도 합니다.
참고로 sync_relay_log를 1보다 크게 또는 sync_relay_log를 0(여기서 동기화는 운영 체제에서 처리됨)인 경우
복제본이 예기치 않게 중단되는 경우 디스크에 동기화되지 않은 커밋된 트랜잭션이 있을 수 있습니다.
이러한 트랜잭션으로 인해 디스크에 마지막으로 동기화된 릴레이 로그에 있는 정보를 기반으로 복구 중인 복제본이 트랜잭션을 건너뛰는 대신
다시 검색 및 적용하려고 하면 복구 프로세스가 실패할 수 있습니다. sync_relay_log를 1로 설정하는 것은 다중 스레드 복제본에서 특히 중요합니다.
여기서 릴레이 로그의 정보를 사용하여 트랜잭션 시퀀스의 간격을 채울 수 없는 경우 복구 프로세스가 실패합니다.
innodb_flush_log_at_trx_commit
각 트랜잭션이 커밋되기 전에 InnoDB 로그를 디스크에 동기화하할지 다른 방법을 사용할지 설정하는 옵션입니다.
이 옵션을 0이나 다른 값으로 설정하면 속도가 정말 빠르게 올라갑니다. 대신 디스크게 문제가 발생시 문제가 발생합니다.
이 설정은 InnoDB 테이블과 InnoDB 로그가 디스크에 저장되어 더 이상 트랜잭션과 관련된 릴레이 로그 정보에 대한 요구 사항이 없도록 합니다.
sync_sync_snc_log를 1로 설정하고, 이 설정은 InnoDB 테이블 및 InnoDB 로그의 내용이 릴레이 로그의 내용과 항상 일치함을 보장하므로,
릴레이 로그 파일을 삭제하면 예기치 않은 중지 시 복제본의 트랜잭션 기록에 채워지지 않는 공백이 발생하지 않습니다.
mysql.slave_relay_log_info, relay_log_info_repository
위의 설정을 FILE이 아닌 TABLE로 설정합니다. 이 설정은 MySQL 5.7에서는 기본값이 FILE이기 때문에 변경을 해주어야 합니다.
이유는 FILE로 설정시 트랜잭션이 적용된 후 업데이트되는 데이터 디렉터리의 파일에 정보가 저장됩니다.
이때 복제본이 중단되는 트랜잭션 처리 단계 또는 파일 자체의 손상에 따라 소스와의 동기화 정보가 깨지거나 잃을 위험이 있기 때문입니다.
relay_log_recovery
서버 시작 직후 자동 릴레이 로그를 복구할지 여부를 선택합니다. 기본값은 OFF입니다. 복제 환경에서만 사용되기 때문입니다.
런타임시 읽기 전용이지만 복제본이 예기치 않게 중단된 후 복제본 시작시 --relay-log-recovery 옵션을 사용하여 ON으로 설정할 수 있습니다.
이 설정은 기존 릴레이 로그 파일이 손상되었거나 일관성이 없는 경우 무시합니다.
중계 로그 복구 프로세스는 새 중계 로그 파일을 시작하고 응용 프로그램 메타데이터 저장소에 기록된 복제 SQL 스레드 위치에서 시작하여 소스에서 트랜잭션을 가져옵니다.
이전 릴레이 로그 파일은 복제본의 일반적인 제거 메커니즘에 의해 시간이 지남에 따라 제거됩니다.
'Databases > MySQL' 카테고리의 다른 글
[MySQL] InnoDB - Redo Log (0) | 2022.02.11 |
---|---|
[MySQL] InnoDB 스토리지 엔진 상태 모니터링 (0) | 2022.01.16 |
[MySQL] IOT 테이블과 Primary Key와의 관계 그리고 세컨더리 인덱스 (0) | 2022.01.03 |
[MySQL] COM_XXX 명령문 카운터 관련 모니터링 (0) | 2022.01.02 |
[MySQL][InnoDB] Buffer Pool 상태저장과 복원(Buffer Pool Cache Warming기법) (0) | 2021.12.18 |