• 구름많음동두천 1.1℃
  • 흐림강릉 2.7℃
  • 구름많음서울 4.1℃
  • 맑음대전 3.1℃
  • 구름많음대구 2.2℃
  • 흐림울산 3.0℃
  • 구름조금광주 5.7℃
  • 구름많음부산 7.5℃
  • 구름많음고창 7.5℃
  • 맑음제주 6.8℃
  • 구름많음강화 2.6℃
  • 맑음보은 -1.0℃
  • 구름많음금산 -1.3℃
  • 맑음강진군 1.3℃
  • 흐림경주시 -0.6℃
  • 구름많음거제 4.7℃
기상청 제공

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;