* 복제 흐름 : Master에서 실행되는 DML, DDL 중 데이터의 구조/내용을 변경하는 모든 쿼리 문장을 Binlog 에 기록하고, Slave에서 변경 내역을 요청하면 Master가 Binlog를 읽어 Slave로 넘긴다.

    - 반동기 방식 : 쿼리를 수행하여 Master 의 Binlog에 기록되면, Slave는 Master에 패킷을 요청하고, Master는 패킷을 보내고 ACK를 기다린다. Slave의 RelayLog에 기록된 뒤, ACK를 Master에 전달하면 Master commit 완료!

 

    - 비동기 방식 : 쿼리를 수행하여 Master의 Binlog에 기록되면, master는 바로 commit 완료되고, Slave는 Master에 패킷을 요청하고, Master로부터 패킷을 받으면 Relay Log에 기록한다. 즉, Master는 Slave의 RelayLog에 기록되었는지를 확인하지 않기 때문에, RelayLog가 제대로 생성되지 않는 경우 데이터 유실 가능성이 존재한다.

 

 

*** Master 가 커밋되는시점!! 반동기는 Master가 ACK받자마자커밋되고 / 비동기는 RelayLog에기록되었을때커밋 

 

< Master / Slave 스레드 >

* Master

    > Binlog Dump 스레드 : Binlog를 읽어 Slave 로 넘기는 역할을 하며, 연결된 Slave의 수 만큼 스레드가 표시된다.

* Slave

    > I/O 스레드 :  Master에 접속해 변경내역을 요청하고, 받아온 변경내역을 Relay Log 에 기록한다.

    > SQL 스레드 : Relay Log 에 기록된 변경내역을 실행하여, Slave의 Data를 Master 와 동일한 상태로 유지한다.

 

 

 

참고

realmysql

https://dev.mysql.com/doc/refman/5.7/en/group-replication-primary-secondary-replication.html

Print Friendly and PDF Posted by JJ*
: