2014년 12월 19일 금요일

MYSQL replication 에서 master 서버 비정상 종료/재부팅 처리방법

[master 서버가 다운되어 재부팅 후 slave의 replication 문제 발생했을 경우]

1. 원인
mysql이 재시작되면서 log 파일명의 일련번호가 바뀌면서 생기는 것으로 추정(1증가)

2. 조치
  1) slave의 mysql 에러 로그에서 master서버의 로그명 및 위치 확인 후 

  2) master 서버에서
      mysql> SHOW BINLOG EVENTS [IN '로그명'] [FROM 위치] [LIMIT [옵셋,] 줄수]
      명령을 통해 master 로그의 해당 위치 이후에 실행된 내용들이 있는지 확인한다.
      ※ 아무 내용이 없다면 slave의 mysql을 중지시키고 master.info와 relay-log.info 파일을  수정한다.
      ※ 혹시라도 master 로그의 해당 위치 이후에 쿼리가 있다면 먼저 조치를 해줘야겠죠...
      ※ 중복되는 쿼리가 있어 skip하고 싶을 경우
           mysql> STOP SLAVE;
           mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N;
                      ※ 일반적으로 하나의 쿼리를 skip할 경우 N=1로 하면되지만  auto increment 등이 포함된 경우 N=2로 해야겠죠.
          mysql> START SLAVE;

    3) master.info 파일 첫번째줄의 master로그명 수정(1증가), 2번째줄의 위치는 4로 수정

    4) relay-log.info 파일 3번째줄의 master로그명 수정(1증가), 4번째줄의 위치는 4로 수정
    ※ 어떤 경우 5번째 줄에 숫자가 있는 경우가 있는데 삭제 요망 (버그로 추정됨)

    5) slave의 mysql을 구동시킨다.

    6) show processlist 또는 show slave status 명령으로 정상동작여부 확인

※MYSQL replication 마스터-슬레이브 상황에서 마스터서버의 비정상적인 리부팅 현상으로 Peplication이 해제가 되어 위방법으로 복구
※ 마스터가 비정상적으로 재부팅되면서 로그.bin 파일의 일련번호가 1증가 되고 슬레이브는 이전 로그파일을 바라보는 현상 발생


출처 :http://www.lovelinux.net/xe/index.php?dummy=nnuvaujm&mid=linux&sort_index=readed_count&order_type=asc&page=4&document_srl=306

댓글 없음:

댓글 쓰기