• -동두천 13.3℃
  • -강릉 9.2℃
  • 맑음서울 11.4℃
  • 맑음대전 10.2℃
  • 맑음대구 10.4℃
  • 맑음울산 10.7℃
  • 맑음광주 10.9℃
  • 맑음부산 13.5℃
  • -고창 9.0℃
  • 구름조금제주 9.6℃
  • -강화 8.1℃
  • -보은 9.2℃
  • -금산 8.6℃
  • -강진군 10.6℃
  • -경주시 10.2℃
  • -거제 11.8℃
기상청 제공

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;