Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 트래픽이 높은 MySQL 복제를 최적화하기위한 주요 구성 설정은 무엇입니까?


트래픽이 높은 MySQL 복제를 최적화하기위한 주요 구성 설정은 무엇입니까?


높은 트래픽 환경에 대한 MySQL 복제를 최적화하기위한 주요 구성 설정에는 성능, 안정성 및 데이터 일관성의 균형을 맞추기 위해 다양한 복제 및 서버 매개 변수를 신중하게 조정해야합니다.

활성/수동 구성 사용 :
교통량이 많은 시나리오에서는 Active/Passive Replication Architecture를 사용하는 것이 좋습니다. 하나의 기본 MySQL Server (Master)는 모든 쓰기 작업 및 다중 수동적 복제품 (Slaves)이 읽기 작업을 처리합니다. 이로 인해 워크로드가 효과적으로 나뉘어 리플리카가 읽기 전용 트래픽을 제공하는 동안 마스터 핸들은 쓰여집니다. 이 설정은 활성/활성 구성의 복잡성 및 충돌 문제를 피합니다. 그러나이 설정에서 흔히 볼 수있는 비동기 복제는 마스터와 복제간에 약간의 지연을 도입 할 수 있으므로 응용 프로그램 논리는 읽기 후에 일관성 요구 사항을 고려해야합니다.

복제 모드 :
MySQL 복제는 비동기 및 반 동시 복제 모드를 지원합니다. 비동기 복제는 기본값이며 고성능이지만 잠재적 인 복제 지연이 있습니다. 반 동기성 복제는 중 하나 이상의 복제가 진행하기 전에 트랜잭션 수령을 확인할 때까지 마스터가 대기하도록하여 데이터 일관성을 향상시킵니다. 이렇게하면 장애 조치 상황에서 데이터 손실의 위험이 줄어들지 만 대기 시간이 추가됩니다. 트래픽이 높은 경우 일관성과 성능 사이의 적절한 상충 관계를 보장하기 위해 반 동기 모드의 시간 초과 설정을 조정해야합니다 (기본 10 초). 때로는 중요한 복제본이 반 동기화를 사용하고 다른 사람들은 비동기를 사용하여 가용성과 성능의 균형을 잡는 경우 혼합 모드가 사용됩니다.

이진 로깅 구성 :
`log-bin``를 설정하고 고유 한 'Server-ID'를 할당하여 마스터에서 바이너리 로깅을 활성화하십시오. `binlog_format = row`를 선택하여 특히 복잡한 워크로드에서 정확도와 일관성에 대한 명령문보다는 개별 행 변경을 기록하십시오. 복구 능력 및 저장 요구의 균형을 맞추기 위해 이진 로그 보유 정책을 현명하게 구성하십시오. 또한 글로벌 트랜잭션 식별자가 복제 관리 및 장애 조치를 단순화하여 자동화를 향상시키기 위해`gtid_mode = on`및`enforce_gtid_consistency = on '을 활성화합니다.

성능을위한 복제 토폴로지 :
높은 트래픽 시나리오에서 복제를 스케일링하려면 계층 적 복제 토폴로지 (Chained 또는 Relay 복제라고도 함)가 권장됩니다. 마스터는 중간 서버 (릴레이 슬레이브)로 복제되어 다른 복제본으로 복제됩니다. 이는 네트워크를 위임하여 마스터의 부하를 줄이고 중간 복제본으로 복제 트래픽을 줄입니다. 이 토폴로지는 네트워크 병목 현상을 완화하고 전반적인 복제 처리량을 향상시킵니다. 그러나 릴레이 서버에서`log_slave_updates`를 활성화해야하므로 성능 오버 헤드를 전달하고 계단식 복제 지연을 방지하기 위해 신중한 모니터링이 필요합니다.

노예의 병렬 복제 :
복제 성능을 향상시키기 위해 복제본에서 병렬 복제를 활성화하십시오. MySQL 5.6+는 다중 스레드 슬레이브 SQL 실행을 지원합니다. `glave_parallel_workers`와 같은 구성 가능한 옵션을 사용하면 여러 복제 SQL 스레드가 트랜잭션을 병렬로 적용 할 수 있도록하여 독립적 인 트랜잭션을 사용한 워크로드에 대한 복제 지연이 줄어 듭니다. 경합을 일으키지 않고 CPU 및 워크로드 특성을 기반으로 최적의 스레드 수를 설정하려면 신중한 튜닝이 필요합니다.

네트워크 및 연결 최적화 :
복제 트래픽을위한 네트워크 구성 최적화 :
- 복제를 위해 전용 네트워크 인터페이스를 사용합니다.
- 복제 스트림에서 압축을 활성화하여 대역폭 사용을 줄입니다.
- 복제 트래픽을 안전하게 허용하도록 방화벽 규칙을 올바르게 구성합니다.
-CPU 오버 헤드가 추가되지만 안전한 데이터 전송을 위해 SSL 암호화 (`-ssl` 옵션 활성화)를 사용합니다.
- 연결 풀링은 빈번한 연결 설정에서 오버 헤드를 줄일 수 있습니다.

저장 및 I/O 최적화 :
바이너리 로깅이 복제에 직접적인 영향을 미치기 때문에 바이너리 로그 쓰기 마스터에서 빠른 스토리지 (SSD 선호)를 사용하십시오. 복제본에서 I/O 경합을 피하기 위해 릴레이 로그에 대한 별도의 저장 장치를 고려하십시오. 복제 로그에는 정기적 인 FSYNC와의 순차적 쓰기가 포함되므로 쓰기에 대한 I/O 스케줄러 설정 및 파일 시스템 매개 변수를 최적화합니다. 디스크 대기 시간은 복제 지연과 전반적인 성능에 직접 영향을 미칩니다.

시간 초과 및 재시험 설정 :
`glave_net_timeout '과 같은 복제 시간 초과 설정을 조정하여 복제 연결이 트래픽 또는 고도가 높은 네트워크에서 조기에 삭제되지 않도록하십시오. 또한 과도 네트워크 고장 중에 더 나은 탄력성을 위해`mas

모니터링 및 경고 :
복제 지연, 네트워크 처리량, 디스크 I/O 및 CPU 사용에 대한 모니터링을 구현하십시오. 도구는 복제 지연 임계 값 및 성능 저하를 나타낼 수있는 기타 이상을 경고 할 수 있습니다. 교통량이 많은 환경에서는 복제 건강을 유지하기 위해 사전 모니터링이 중요합니다.

장애 조치 및 백업 전략 :
고 가용성을 위해 복제를 사용하는 것 외에도 복제본을 정기적으로 백업해야합니다. 실패 절차를 자주 테스트합니다. GTID를 사용하여 마지막으로 실행 된 트랜잭션을 쉽게 식별하고 복제본이 데이터 손실없이 따라 잡을 수 있도록 장애 조절 복구를 단순화합니다. 사슬 된 복제 토폴로지에서, 릴레이 슬레이브와 잎 복제본이 장애 조치 전에 완전히 동기화되도록하십시오.

추가 설정 :
- 오버 헤드를 줄이려면 복제본에서 불필요한 로깅 및 모니터링을 비활성화합니다.
- 내구성을 위해 마스터에`sync_binlog = 1`를 사용하고, 인식은 디스크 성능에 영향을 미칩니다.
-`max_allowed_packet '을 조정하여 오류없이 대규모 트랜잭션을 복제 할 수 있습니다.

주요 구성 매개 변수 요약 :
- 마스터 :
-`server-id` (고유)
-`log-bin = mysql-bin`
-`binlog_format = row`
-`gtid_mode = on
-`enforce_gtid_consistency = on '
-`sync_binlog = 1` (내구성을 위해)
- 복제본 :
-`server-id` (마스터와 다른 독특)
-`relay_log '
-`log_slave_updates` (중간 릴레이로 사용되는 경우)
-`ravel_parallel_workers` (병렬 복제의 경우 1)
-네트워크 조건을 위해``슬레이브-네트 타임 아웃 '
- 복제 모드 :
- 임계 복제본에 대한 반 동시성 복제 활성화 (`rpl_semi_sync_master_enabled = on,`rpl_semi_sync_slave_enabled = on ')
- 네트워크 :
-SSL이 복제를 위해 활성화되었습니다
- 처리량이 제한된 경우 압축이 가능합니다
- 저장:
- 이진 및 릴레이 로그 용 SSD
- 가능한 경우 릴레이 로그에 대한 별도의 디스크
- 토폴로지 :
- 체인 또는 계층 적 복제를 사용하여 하중을 분배하십시오.

높은 네트워크 및 디스크 처리량을 처리 할 수있는 인프라와 결합 된 이러한 설정을 구현하면 MySQL 복제가 더 나은 복제 지연 관리, 결함 허용 오류 및 데이터 일관성을 통해 높은 트래픽 환경에서 최적으로 수행 할 수 있습니다.