일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 쁘띠프랑스
- 리플리케이션 오류
- 날짜계산
- no key alg
- xcache
- strtotime
- 재귀쿼리
- 특정 패키지 업데이트 중지 / 해제
- 뒤로 가기
- node 이미지 저장
- php
- 훼인
- 이미지주소추출
- 워드프레스한글팩
- php-fpm
- mongodb
- 태권브이
- simplexml_load_filesimplexml
- 외래키
- openfire
- MySQL
- quota
- security.limit_extensions
- set foreign_key
- 중독 게임
- ssmtp
- 태권v
- rsync
- node.js
- 앞으로 가기
- Today
- Total
일상 기록 창고
리플리케이션 오류시 특정 부분 건너 뛰기 본문
아아아악 ;; 디비까지 만져야 하다니 아아아악 ;;;;;
replication서비스를 진행하다가 보면
replication이 아래와 같은 이유등으로 오류가 날 경우가 있습니다.
이때의 데이터가 필요없는 부분이라면 그냥 건너뛰게 하면 되는데요
건너뛰게 하는 방법은 아래와 같습니다.
slave서버에서 멈춘 위치 확인(Exec_master_log_pos: 1033756136)
mysql> show slave status\G
master서버에서 멈춘 위치근처에 어떤 쿼리들이 있는지 확인
mysql> show binlog events in 'MASTERSERVER-bin.012' from 1033756136 limit 3\G
오류가 발생한 쿼리는 필요없으므로 다음 쿼리로 이동
mysql> slave stop;
mysql> change master to master_log_file='MASTERSERVER-bin.012', master_log_pos=1033756434;
mysql> slave start;
mysql> show slave status\G
---------------------상세한 내용--------------------------------------
mysql> show slave status\G
*************************** 1. row ***************************
Master_Host: 192.168.*.*
Master_User: userid
Master_Port: 1111
Connect_retry: 60
Master_Log_File: MASTERSERVER-bin.012
Read_Master_Log_Pos: 1049058337
Relay_Log_File: MEMOINFOS2-relay-bin.011
Relay_Log_Pos: 1033731265
Relay_Master_Log_File: MASTERSERVER-bin.012
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_do_db:
Replicate_ignore_db:
Last_errno: 1062
Last_error: Error 'Duplicate entry '18462' for key 1' on query 'INSERT INTO dbaaa.TBLEVENT_0818_RECEIVE (EVENTKEY, seq, USERID, SENDERseq, CREATEDATE, UPDATEDATE) VALUES (xxx, 111, '222@aaa.com', '4337665', NOW(), NOW())'. Default database: 'INFODB'
Skip_counter: 0
Exec_master_log_pos: 1033756136
Relay_log_space: 1049033466
1 row in set (0.00 sec)
master에서 Exec_master_log_pos에 나타난 숫자 뒤에 어떤 이벤트 로그가 있는지 확인
mysql> show binlog events in 'MASTERSERVER-bin.012' from 1033756136 limit 3\G
*************************** 1. row ***************************
Log_name: MASTERSERVER-bin.012
Pos: 1033756136
Event_type: Intvar
Server_id: 1
Orig_log_pos: 1033756136
Info: INSERT_ID=18462
*************************** 2. row ***************************
Log_name: MASTERSERVER-bin.012
Pos: 1033756164
Event_type: Query
Server_id: 1
Orig_log_pos: 1033756164
Info: use `INFODB`; INSERT INTO INFODB.TBLEVENT_0818_RECEIVE (EVENTKEY, seq, USERID, SENDERCMN, CREATEDATE, UPDATEDATE) VALUES (xxx, 111, '222@aaa.com', '4337665', NOW(), NOW())
*************************** 3. row ***************************
Log_name: MASTERSERVER-bin.012
Pos: 1033756434
Event_type: Query
Server_id: 1
Orig_log_pos: 1033756434
Info: use `INFODB`; UPDATE `dbaaa`.`aaa` SET `LOGOUTDATE` = NOW(), UPDATEDATE = NOW() WHERE `seq` = '1'
3 rows in set (0.00 sec)
slave stop;
change master to master_log_file='MASTERSERVER-bin.012', master_log_pos=1033756434;
slave start;
show slave status\G
[출처] [mysql] 리플리케이션이 오류시 특정부분 건너뛰기 |작성자 기쁨두배
'프로그래밍 > mysql' 카테고리의 다른 글
localhost.localdomain.pid 오류.. (0) | 2009.05.27 |
---|---|
substring_index 활용 (0) | 2009.05.26 |
@RNUM:=@RNUM+1 (0) | 2009.05.19 |
문자열 합치기 (0) | 2007.09.19 |
mysql 함수 모음.. (0) | 2006.05.14 |