• 흐림동두천 1.0℃
  • 흐림강릉 1.3℃
  • 서울 3.2℃
  • 대전 3.3℃
  • 대구 6.8℃
  • 울산 6.6℃
  • 광주 8.3℃
  • 부산 7.7℃
  • 흐림고창 6.7℃
  • 흐림제주 10.7℃
  • 흐림강화 2.2℃
  • 흐림보은 3.2℃
  • 흐림금산 4.4℃
  • 흐림강진군 8.7℃
  • 흐림경주시 6.7℃
  • 흐림거제 8.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;