MySQL 특징

  • Master MySQL은 Slave MySQL에 대한 정보를 전혀 가지고 있지 않다. 이는 slave가 있는지 없는지, 몇개의 slave가 붙어 있는지, 각 slave가 어디까지 data를 복제했는지 모른다는 거다.
  • Master MySQL에서 Data 또는 스키마에 대한 변경 Event가 발생하면 Binary logs에 기록한다. 다시 말하자면, Data 또는 스키마를 변경하려는 Event를 기록한다는 것이다.  이는 Binary logs가 존재하는 한 데이터를 복구 할 수 있다는 뜻이다. 물론 복제 할 때에도 사용된다.
  • Slave MySQL은 어떤 Event까지 저장되어 있는지 기억하고 있다.

허면 어떻게 MySQL Replication가 이루어 지는지 알아볼 필요가 있다.

 

1. Slave는 I/O thread를 통해 Master에게 Event를 요청한다.(slave는 어떤 Event까지 저장되어있는지 알고 있기 때문에 Master에게 그 이후의 Event를 요청)

 

2. Slave가 Event를 요청하면 Master에서는 Binlog dump thread를 통해 Slave에 Event를 보낸다.

Binlog dump thread : Master에 저장된 Binary logs를 Slave에 전달하기 위해 Master에서는 thread를 만드는데 이를 Binlog dump thread라고 한다. Binlog dump thread는 Slave에서 Event를 요청하면 Binary logs에 락을 걸고 안에 기록된 Event 읽고, 락을 풀고 Slave에 전달하는 기능을 가지고 있다.

 

3. Slave는 I/O thread를 통해 받은 Event를 Relay log에 기록한다.

 

4. Slave는 SQL thread를 통해 Event가 기록된 Relay log를 읽고 자신의 데이터를 변경 한다. 그리고 Relay log를 지운다.

'Centos7 > MySQL' 카테고리의 다른 글

GROUP BY 그룹별-월별 최신날짜의 데이터 가져오기  (0) 2020.06.29
MySQL Replication  (0) 2019.05.27

+ Recent posts