mysql에서 마스터-슬레이브는 두 개의 동일한 데이터베이스를 구축하는 것을 의미하며, 그 중 하나는 기본 데이터베이스로 사용되고 다른 하나는 보조 데이터베이스로 사용되어 데이터베이스 서버 다운타임으로 인한 데이터 손실을 방지하고 장애 관리를 제공할 수 있습니다. , 읽기-쓰기 분리 및 백업 기능.
이 튜토리얼의 운영 환경: windows10 시스템, mysql8.0.22 버전, Dell G3 컴퓨터.
마스터-슬레이브 소개
소위 mysql 마스터-슬레이브는 두 개의 동일한 데이터베이스를 구축하는 것으로, 그 중 하나는 기본 데이터베이스이고 다른 하나는 보조 데이터베이스입니다. 기업에서는 더 중요한 데이터를 저장하는 데이터베이스 서버를 마스터-슬레이브 구성으로 구성해야 데이터베이스 서버 다운타임으로 인한 데이터 손실을 방지할 수 있고, 서버 용량 초과 시 서비스 품질(서버 응답 속도)도 보장할 수 있습니다. 비즈니스, 데이터가 너무 많거나 방문자가 너무 많을 경우 장애 조치, 읽기-쓰기 분리, 백업 등의 기능도 제공할 수 있습니다.
마스터-슬레이브 형태
마스터 1개와 슬레이브 1개
마스터-마스터 복제: 백업으로 사용됩니다. 마스터 서버에 장애가 발생하면 다른 마스터 서버가 자동으로 대신합니다.
하나의 마스터와 다중 슬레이브: 쓰기 작업이 적고 읽기 작업이 많을 때 사용되며, 슬레이브 서버는 읽기 작업에 사용됩니다. 운영.
여러 마스터와 하나의 슬레이브: 쓰기 작업이 많고 읽기 작업이 적을 때 사용되며, 슬레이브 서버는 읽기를 구현하는 데 사용됩니다. 운영.
전통적인 마스터-슬레이브
전통적인 마스터-슬레이브 복제는 주로 바이너리 로그 파일의 위치를 기반으로 하는 복제이므로 마스터는 바이너리 로깅을 시작하고 고유한 서버 ID를 설정해야 하며 복제 그룹의 각 서버는 고유한 서버 ID로 구성됩니다. server-id를 생략하거나 기본값인 0으로 명시적으로 설정하면 마스터는 슬레이브의 모든 연결을 거부합니다.
gtid master-slave
MySQL 5.6의 새로운 기능 중 하나인 GTID(Global Transaction Identifier)는 소스(마스터) 서버에서 커밋된 모든 트랜잭션과 연결되고 생성되는 고유 식별자입니다. 이 식별자는 고유할 뿐만 아니라 특정 복제 설정의 모든 서버에서도 고유합니다. 모든 트랜잭션과 모든 GTID 사이에는 일대일 매핑이 있습니다. 서버 ID와 트랜잭션 ID로 구성됩니다. 이 전역 트랜잭션 ID는 원래 서버에서 고유할 뿐만 아니라 마스터-슬레이브 관계를 갖는 모든 mysql 서버에서도 고유합니다. mysql의 마스터-슬레이브 복제가 더 간단해지고 데이터베이스 일관성이 더 안정적이 되는 것은 바로 이 기능 때문입니다. GTID는 반복 실행으로 인한 데이터 혼란이나 마스터-슬레이브 불일치를 피하기 위해 서버에서 한 번만 실행됩니다.
마스터-슬레이브 복제 원리
마스터-슬레이브 복제 작업 흐름: 마스터 라이브러리는 모든 사용자 쓰기 작업(추가, 삭제, 수정, 확인 제외)을 binlog 로그에 기록하고 로그 덤프 스레드를 생성합니다. 슬레이브 라이브러리는 I/O 및 SQL 스레드를 생성하고, 슬레이브 라이브러리의 I/O 스레드는 메인 라이브러리의 로그 덤프 스레드에 I/O 스트림 형태로 요청을 보냅니다. 슬레이브 라이브러리의 I/O 스레드로부터 요청을 받은 후 binlog 로그를 슬레이브 라이브러리로 전송합니다. 슬레이브 라이브러리의 I/O 스레드는 binlog 로그를 수신하여 릴레이 로그(relay log) 파일에 기록합니다. 그런 다음 슬레이브 라이브러리의 SQL 스레드는 릴레이 로그 파일의 로그를 SQL 스크립트로 구문 분석하고 최종적으로 이를 실행합니다. 생성된 SQL 스크립트 파일은 일관된 마스터-슬레이브 작업을 달성하고 최종 데이터 일관성을 달성하는 데 사용됩니다.
추천 학습: mysql 비디오 튜토리얼
위 내용은 mysql 마스터-슬레이브란 무엇인가?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!