mysql에서 마스터-슬레이브 복제는 MySQL 데이터베이스 서버 마스터 노드에서 하나 이상의 슬레이브 노드로 데이터를 복사할 수 있음을 의미합니다. 기본적으로 비동기 복제가 사용됩니다. 마스터-슬레이브 복제 사용의 이점: 1. 마스터 데이터베이스가 쓰기를 담당하고 슬레이브 데이터베이스가 읽기를 담당하도록 합니다. 마스터 데이터베이스가 테이블을 잠그면 슬레이브에서 읽어 비즈니스의 정상적인 작동을 보장할 수 있습니다. 2. 데이터의 핫 백업이 가능합니다. 3. 아키텍처를 확장하면 디스크 I/O 액세스 빈도가 줄어들고 단일 시스템의 I/O 성능이 향상됩니다.
이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.
mysql 마스터-슬레이브 복제란 무엇입니까?
MySQL 마스터-슬레이브 복제는 MySQL 데이터베이스 서버 마스터 노드에서 하나 이상의 슬레이브 노드로 데이터를 복사할 수 있음을 의미합니다. MySQL은 기본적으로 비동기 복제를 사용하므로 슬레이브 노드는 자체 데이터를 업데이트하기 위해 항상 마스터 서버에 액세스할 필요가 없습니다. 슬레이브 노드는 원격 연결에서 모든 데이터베이스 또는 특정 데이터베이스를 복사할 수 있습니다. 마스터 데이터베이스 또는 특정 테이블.
마스터-슬레이브 복제가 필요한 이유는 무엇입니까?
1 복잡한 비즈니스가 있는 시스템에서는 SQL 문으로 인해 테이블을 잠가야 하는 경우가 발생하여 일시적으로 읽기 서비스를 사용할 수 없게 되어 실행 중인 비즈니스에 큰 영향을 미칩니다. 복제는 마스터가 쓰기를 담당하고, 슬레이브 라이브러리가 읽기를 담당합니다. 이렇게 하면 메인 라이브러리가 테이블을 잠그더라도 슬레이브 라이브러리에서 읽어서 정상적인 비즈니스 작동을 보장할 수 있습니다.
2. 데이터의 핫 백업
3. 비즈니스 볼륨이 점점 커지고 I/O 액세스 빈도가 너무 높아 단일 시스템으로는 충족할 수 없습니다. 이때 디스크 I/O 액세스 빈도를 줄이기 위해 다중 데이터베이스 스토리지가 사용됩니다. 단일 머신의 I/O 성능을 향상시킵니다.
mysql 복제 원칙
원리:
(1) 마스터 서버는 데이터 변경 사항을 바이너리 binlog 로그에 기록합니다. 마스터의 데이터가 변경되면 변경 사항이 바이너리 로그에 기록됩니다.
(2) 슬레이브 서버는 특정 시간 간격 내에 마스터 바이너리 로그가 변경되었는지 여부를 감지하고 변경된 경우 I/OThread를 시작하여 마스터 바이너리 이벤트를 요청합니다
(3) 동시에 마스터 노드는 덤프 스레드를 시작하여 바이너리 이벤트를 보내고 이를 슬레이브 노드의 로컬 릴레이 로그에 저장합니다. 슬레이브 노드는 SQL 스레드를 시작하여 릴레이 로그에서 바이너리 로그를 읽고 재생합니다. 데이터는 기본 노드의 데이터와 일관성을 유지합니다. 마지막으로 I/OThread 및 SQLThread는 절전 상태에 들어가 다음 번에 깨어날 때까지 기다립니다.
즉,
참고:
– 마스터는 작업 명령문을 binlog 로그에 기록한 다음 슬레이브에 원격 연결 권한을 부여합니다(마스터는 binlog 바이너리를 활성화해야 합니다). 로그 기능; 일반적으로 데이터 보안상의 이유로 슬레이브는 binlog 기능도 활성화합니다.
–슬레이브는 IO 스레드와 SQL 스레드라는 두 개의 스레드를 엽니다. 그 중: IO 스레드는 마스터의 binlog 내용을 릴레이 로그로 읽는 역할을 담당합니다. SQL 스레드는 릴레이 로그에서 binlog 콘텐츠를 읽고 이를 슬레이브 데이터베이스로 업데이트하는 역할을 담당합니다. 데이터와 마스터 데이터는 일관되게 유지됩니다.
–Mysql 복제에는 최소한 두 개의 Mysql 서비스가 필요합니다. 물론 Mysql 서비스는 여러 서버에 배포되거나 하나의 서버에서 여러 서비스를 시작할 수 있습니다.
–Mysql 복제는 마스터 서버와 슬레이브 서버의 Mysql 버전이 동일한지 확인하는 것이 가장 좋습니다(버전이 일치할 수 없는 경우 마스터 노드 버전이 슬레이브 노드 버전보다 낮은지 확인하세요) )
–마스터 및 슬레이브 두 노드 사이의 시간을 동기화해야 합니다
구체적인 단계:
1. 슬레이브 라이브러리는 마스터 변경을 수동으로 실행하여 메인 라이브러리에 연결됩니다. 명령문을 작성하고 연결된 사용자에 대한 모든 조건(사용자, 비밀번호, 포트, IP)을 제공하고 슬레이브 라이브러리에 바이너리 로그의 시작 위치(파일 이름 위치 번호)를 알려줍니다. 슬레이브 라이브러리의 IO 스레드와 메인 라이브러리의 덤프 스레드 사이.
3. Change master to 문에서 제공한 파일 이름과 위치 번호를 기반으로 슬레이브 라이브러리는 IO 스레드에서 기본 라이브러리에 대한 binlog 요청을 시작합니다.
4. 메인 라이브러리 덤프 스레드는 슬레이브 라이브러리의 요청에 따라 이벤트 형식으로 로컬 binlog를 슬레이브 라이브러리 IO 스레드로 보냅니다.
5. 라이브러리 IO 스레드에서 binlog 이벤트를 수신하고 이를 로컬 릴레이 로그에 저장합니다. 전송된 정보는 master.info
에 기록됩니다.6. 데이터베이스의 SQL 스레드에서 Relay-log를 적용하고, 적용된 정보를 Relay-log.info에 기록합니다. 기본적으로 적용된 Relay는 자동으로 삭제됩니다
mysql master-slave form
(1) 하나의 마스터와 하나의 슬레이브
(2) 마스터-마스터 복사
(3) 하나의 마스터와 여러 개의 슬레이브
(4) 여러 마스터 그리고 하나 From
(5) 계단식 복제
mysql 마스터-슬레이브 동기화 지연 분석
mysql의 마스터-슬레이브 복제는 단일 스레드 작업이며 기본 라이브러리 모든 DDL을 수행하며 생성된 로그와 DML은 binlog에 기록되므로 슬레이브의 sql 스레드 스레드가 슬레이브의 메인 라이브러리의 DDL 및 DML 작업 이벤트를 재생하는 데 매우 효율적입니다. DML과 DDL의 IO 작업은 순차적이 아닌 무작위이므로 비용이 훨씬 더 많이 드는 반면, SQL 스레드도 단일 스레드이기 때문에 메인 라이브러리의 동시성이 높을 때 생성되는 DML의 수가 많습니다. 슬레이브의 SQL 스레드 용량을 초과하거나, 슬레이브에 큰 쿼리문이 있어 잠금 대기가 발생하는 경우 지연이 발생합니다.
해결책:
1. 비즈니스 지속성 계층의 구현은 하위 데이터베이스 아키텍처를 채택하고 mysql 서비스를 병렬로 확장하여 압력을 분산시킬 수 있습니다.
2. 하나의 마스터와 여러 슬레이브, 마스터 쓰기 및 슬레이브 읽기 등 단일 라이브러리에서 읽기 및 쓰기를 분리하여 압력을 분산시킵니다. 이런 방식으로 슬레이브 라이브러리의 압력이 메인 라이브러리보다 높아 메인 라이브러리를 보호합니다.
3. 서비스 인프라는 비즈니스와 mysql 사이에 memcache 또는 redis 캐시 레이어를 추가합니다. mysql의 읽기 압력을 줄입니다.
4. 다양한 비즈니스를 위한 MySQL은 압력을 분산시키기 위해 물리적으로 다른 시스템에 배치됩니다.
5. 슬레이브로 메인 라이브러리보다 더 나은 하드웨어 장치를 사용하면 MySQL의 부담이 줄어들고 지연도 자연스럽게 줄어듭니다.
6. 더 강력한 하드웨어 장비를 사용하세요
[관련 권장 사항:mysql 비디오 튜토리얼]
위 내용은 mysql 마스터-슬레이브 복제란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!