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 |