• 맑음동두천 18.6℃
  • 맑음강릉 23.0℃
  • 맑음서울 19.4℃
  • 맑음대전 17.5℃
  • 흐림대구 14.8℃
  • 흐림울산 17.2℃
  • 맑음광주 20.9℃
  • 구름많음부산 19.9℃
  • 맑음고창 19.7℃
  • 제주 18.5℃
  • 맑음강화 17.2℃
  • 맑음보은 12.3℃
  • 맑음금산 16.1℃
  • 흐림강진군 17.8℃
  • 구름많음경주시 17.7℃
  • 구름많음거제 17.0℃
기상청 제공

mysql replication error(동기화 문제)

mysql Replication 이용 중 마스터 디비의 데이터가 슬래이브 디비의 데이터에 반영되지 않을 경우
슬래이브 상태를 확인했을 때 아래와 같은 에러가 발생할 수 있다.

101008 19:48:58 [ERROR] Slave: Error 'Duplicate entry '222' for key 1' on query. Default database: 'M_SERVICE'. Query: 'INSERT INTO      T_LOTTO_MY     (     MY_SEQ,USERNO,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,GAME_NUM,RANK,PRIZE,UPDATE_DATE     )   VALUES     (     null,'620013149754',4,18,25,44,16,8,409,'0',0,NOW()     )', Error_code: 1062

원인은 슬래이브 데이터베이스에 갱신된 데이터를 쓰로고 할때 발생하는 에러이다.

슬래이브는 에러가 발생하면 더이상 마스터로부터 갱신된 데이터를 반영하지 않는다.
하지만 다행스럽게도 마스터에서의 갱신 정보는 슬래이브에 쌓여있어
위 문제를 해결하여 Replication을 정상화 시킬 수 있다.


해결책)
1. 슬래이브 상태를 멈춘다.
stop slave;

2. 에러 쿼리를 하나 스킵한다.
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

3. 다시 슬래이브를 시작한다.
start slave;