Real MariaDB (2017년)
멀티 스레드 복제 0 0 35,321

by 구루비스터디 레플리케이션 멀티 스레드 복제 [2019.08.11]


3. 멀티 스레드 복제

1) MySQL 의 멀티 스레드 복제


멀티 쓰레드는 데이터베이스 단위로 병렬 처리를 지원함
  • 데이터베이스가 하나 일 경우 아무 장점이 없다
  • 사용하는 데이터베이스의 개수만큼 슬레이브의 쓰레드 개수 설정


멀티 쓰레드 코디네이터의 기능과 역할


  • 릴레이 로그 파일의 바이너리 로그 이벤트를 읽어 데이터베이스 단위로 분리하고 슬레이브의 각 스레드에 분배
  • 이벤트 간 충돌에 대한 제어 - 테이블이나 row 단위의 lock 을 제어하는게 아닌 데이터베이스 단위로 수행


마스터에서 이벤트 발생 순서대로 슬레이브에서 처리되지 않는다
  • DB 단위로 분배되므로 빠른 순서가 먼저 수행 됨
  • 하나의 GTID 에 복제 된 시점의 바이너리 로그 위치를 표현할 수 없음
  • 이로 인해 GTID Set 의 개념 사용 - "서버UUID:시작 Transaction 번호 - 마지막 Transaction 번호" 의 연속으로 구성
  • 누락된 Transaction 번호가 있을 경우 "UUID:Start#-End#" 의 나열이 너무 많아질 수 있어서 누락을 아예 허용하지 않는다고 함


1) Maria DB 의 멀티 스레드 복제

  • 순차/비순차의 두 가지 방식 지원


비 순차 복제
  • 도메인 ID 를 기준으로 동작하며 데이터베이스 단위의 멀티 스레드는 지원하지 않음
  • 하나의 마스터만 있는 경우에는 도메인 ID 는 세션 단위로 설정 가능한 변수이므로 배치 프로그램 등에서 임의로 도메인 ID 를 지정하여 수행 하면 슬레이브에서 멀티 스레드로 동작 가능


순차 복제
  • 바이너리 로그의 그룹 커밋이란? 쓰기 성능 향상을 위해 여러 이벤트를 한번에 모아 커밋 처리


  • 순차 복제 시 동일 그룹의 트렌젝션을 대상으로 처리
  • 코디네이터 스레드가 각 SQL 스레드에 커밋 그룹 단위로 작업 분배
  • 커밋 그룹 간의 충돌이 없다는게 이미 마스터에서 검증 되었으므로 가능
  • 하나의 그룹 내에 트렌젝션이 많을 수록 - 빠르고 가벼운 쿼리들이 빈번하게 사용되는 환경에서 유용 함
"구루비 데이터베이스 스터디모임" 에서 2017년에 "Real MariaDB" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4215

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입