MySQL에 내장된 복제 기능은 대규모 고성능 애플리케이션을 구축하기 위한 기반입니다. MySQL 데이터를 여러 시스템에 배포합니다. 이 분산 메커니즘은 특정 MySQL 호스트의 데이터를 다른 호스트 슬레이브에 복사하고 이를 다시 실행함으로써 달성됩니다.
복제 중에 하나의 서버는 마스터 역할을 하고 하나 이상의 다른 서버는 슬레이브 역할을 합니다. 마스터는 바이너리 로그 파일에 업데이트를 기록하고 파일 인덱스를 유지하여 로그 회전을 추적합니다. 이러한 로그는 슬레이브 서버로 전송된 업데이트를 기록합니다. 슬레이브가 마스터에 연결되면 슬레이브가 로그에서 읽은 마지막 성공적인 업데이트 위치를 마스터에 알립니다. 슬레이브 서버는 그 이후 발생한 모든 업데이트를 수신한 다음 마스터 서버가 업데이트를 알릴 때까지 차단하고 기다립니다.
mysql 마스터-슬레이브 복제 문제:
답변: MySQL 데이터베이스의 마스터-슬레이브 동기화 지연 원리에 대해 이야기할 때 mysql 데이터베이스의 마스터-슬레이브 복제 원칙부터 시작해야 합니다. Mysql의 마스터-슬레이브 복제는 기본 데이터베이스가 binlog를 생성하는 작업입니다. 모든 DDL 및 DML에 대해 Binlog는 시퀀스 쓰기이므로 슬레이브의 Slave_IO_Running 스레드는 로그를 가져오기 위해 메인 라이브러리로 이동하며 슬레이브의 Slave_SQL_Running 스레드는 모든 작업을 구현합니다. 슬레이브에서 기본 라이브러리의 DDL 및 DML 작업. DML 및 DDL의 IO 작업은 순차적이지 않고 무작위이므로 비용이 매우 높습니다. 슬레이브에 대한 다른 쿼리도 잠금 경합을 일으킬 수 있습니다. Slave_SQL_Running도 단일 스레드이므로 DDL 카드 마스터를 10번 실행해야 합니다. 분 후에 모든 후속 DDL은 계속하기 전에 이 DDL의 실행이 완료될 때까지 기다리므로 지연이 발생합니다. 어떤 친구들은 "메인 라이브러리의 동일한 DDL도 10분 동안 실행해야 합니다. 슬레이브가 지연되는 이유는 무엇입니까?"라고 묻습니다. 대답은 마스터는 동시에 실행할 수 있지만 Slave_SQL_Running 스레드는 실행할 수 없다는 것입니다.
답변: 메인 라이브러리의 TPS 동시성이 높을 때 생성된 DDL 수가 슬레이브의 SQL 스레드 하나가 감당할 수 있는 범위를 초과하여 지연이 발생합니다. 물론 슬레이브와 함께 잠금 대기가 발생할 수도 있습니다. 큰 쿼리 문.
답변: 슬레이브 동기화 지연을 줄이는 가장 간단한 솔루션은 아키텍처를 최적화하고 기본 라이브러리의 DDL이 빠르게 실행되도록 노력하는 것입니다. sync_binlog=1, innodb_flush_log_at_trx_commit = 1 및 기타 설정과 같이 높은 데이터 보안을 갖는 기본 라이브러리가 작성된다는 사실도 있지만 슬레이브에는 이러한 높은 데이터 보안이 필요하지 않습니다. binlog를 끄십시오. innodb_flushlog를 0으로 설정하여 SQL 실행 효율성을 높일 수도 있습니다. 다른 하나는 메인 라이브러리보다 좋은 하드웨어 장치를 슬레이브로 사용하는 것입니다.
1. 네트워크 지연
2. 마스터로드
3. 슬레이브 로드
일반적인 접근 방식은 여러 슬레이브를 사용하여 읽기 요청을 분산시킨 다음 다른 작업 없이 백업에만 이러한 슬레이브의 전용 서버를 사용하여 '실시간' 요구 사항을 최대한 달성하는 것입니다.
–slave-net-timeout=초
매개변수 의미: 슬레이브가 기본 데이터베이스에서 로그 데이터를 읽지 못한 경우 연결을 다시 설정하고 데이터를 얻기까지 기다리는 시간
Slave_net_timeout의 단위는 초입니다. 기본 설정은 3600초
입니다.
|slave_net_timeout 3600
–마스터-연결-재시도=초
매개변수 의미: 마스터-슬레이브 연결을 다시 설정할 때 연결 설정에 실패할 경우 재시도하는 데 걸리는 시간입니다.
마스터-연결-재시도 단위는 초입니다. 기본 설정은 60초입니다
일반적으로 위의 2개 매개변수를 구성하면 네트워크 문제로 인한 마스터-슬레이브 데이터 동기화 지연을 줄일 수 있습니다
위 내용은 mysql 마스터-슬레이브 지연을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!