게시물 5건
   
[DB] Mysql Replication - Part.2
글쓴이 : 최장섭 날짜 : 2013-07-09 (화) 13:59 조회 : 703
▶ 리플리케이션은 다음과 같은 3가지의 원리로 동작하게 된다.
_ I/O 쓰레드와 SQL 쓰레드
_ 바이너리 로그와 릴레이 로그
_ 포지션 정보


▶ 슬레이브의 I/O 쓰레드와 SQL 쓰레드
슬레이브에서는 리플리케이션을 위해 "I/O쓰레드", "SQL쓰레드" 두 개의 쓰레드가 동작하고 있다.
I/O 쓰레드는 마스터에서어 데이터를 릴레이 로그 라고 하는 파일에단 지 기록하기만 한다 .
SQL 쓰레드는 릴레이로 그를 읽어서 오로지 실행하기만 한다.

두개의 쓰레드로 나누어져 있는 이유는 리플리케이션의 지연을 줄이기 위해서 이다.
I/O 와 SQL 쓰레드의 일을 하나의 쓰레드에서 수행할 경우 ,처리에 소요되는 SQL 구문이 있다면
그 시간동안 SQL문 처리에 매달려야 하므로 마스터로부터의 데이터 복제를 할 수 없게 된다.
이러한 문제를 위해 두개의 쓰레드로 역할을 분담한 것이다.

▶ 바이너리 로그와 릴레이 로그

마스터에는 "바이너리 로그" 슬레이브에는 "릴레이 로그" 라고 하는 파일이 생성된다.
바이너리 로그에는 데이터를 갱신하는 처리만이 기록되고, 데이터를 참조하는 쿼리는 기록되지 않는다.
또한, 바이너리 로그는 리플리케이션 외에도 풀백업에서 갱신된 내용만 보관하고자 할 경우에도 사용된다.
바이너리 로그는 텍스트 형식이 아니므로 직접 에디터로 열어볼 수는 없지만, mysqlbinlog 명령을 이용해 텍스트 형식으로 별환할 수 있다.

릴레이 로그란, 슬레이브의 I/O 쓰레드가 마스터로부터 갱신 로그(갱신 관련 쿼리를 기록한 데이터)를 수신해서 슬레이브 측에 저장한 것이다.
따라서 그 내용은 바이너리 로그와 동일하다.
다만, 바이너리 로그와 달리 필요없어지면 SQL 쓰레드에 의해 자동적으로 삭제되므로 수동으로 삭제할 필요는 없다.

▶ 포지션 정보
슬레이브는 리플리케이션 완료한 위치정보를 알고 있다. 그러므로 슬레이브의 mysqld를 일단 종료하고 잠시 후에 다시 기동하더라도 종료한
시점부터 데이터 리플리케이션을 제개할 수 있다.

마스터 호스트명, 로그 파일명, 로그 파일 내에서 처리한 포인트 정보를 "포지션 정보"라 한다.
이 포지션 정보는 "master.info" 라는 텍스트 형식의 관리되고 있으며, SHOW SLAVE STATUS 라는 SQL 문으로 확인 할 수 있다.

이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

miwit.com sir.co.kr DNS Powered by DNSEver.com DNS Powered by DNSEver.com