database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 26503 게시물 읽기
No. 26503
리플리케이션 에 관해..
작성자
박성민
작성일
2007-03-16 11:56
조회수
2,060

안녕 하세요 질문이 있어서 글을 올립니다..


현제 4.1.7 을 2대 놓고 


master 는 update insert 등을 하고

slave 에는 select 만 하고 


리플리케이션으로 돌리고 있습니다..


사용자는 그렇게 많지는 않습니다. 하지만 양은 좀 있습니다..


첨에는 문제 없시 잘 작동하였지만..


시간이 지나자 master 는 별 문제 없지만 slave 에 접속하는 속도가 현저하게 떨어져서 어떨땐 먹통이 되어 버립니다.


서버로드도 별로 걸리지 않고 mysqld CPU 점유율도 그렇게 되지 않는데 접속도 느리고 select 도 느려졌습니다..


그래서 processlist 를 봤더니.. 다음 처럼 나옵니다.


+-------+-------------+---------------------+-----+---------+--------+----------------------------------+------------------------------------------------------------------------------------------------------+

| Id    | User        | Host                | db  | Command | Time   | State                            | Info                                                                                                 |

+-------+-------------+---------------------+-----+---------+--------+----------------------------------+------------------------------------------------------------------------------------------------------+

| 1     | system user |                     |     | Connect | 354034 | Waiting for master to send event |                                                                                                      |

| 2     | system user |                     | xxx | Connect | 44     | Locked                           | update xxxxx 

          set

            title='???? ?????? ?????.. ?????? ???????', content='     |

| 46159 | xxxuser     | xxx.xxx.xxx.xx:2718 | msn | Query   | 49     | Sorting result                   | select id, title, subtitle, left(content,300) as content, idx, indate, left(indate,10) as d, right(i |

| 46164 | xxxuser     | xxx.xxx.xxx.xx:2878 | msn | Query   | 42     | Sorting result                   | select id, title, subtitle, left(content,300) as content, idx, indate, left(indate,10) as d, right(i |

| 46173 | xxxuser     | xxx.xxx.xxx.xx:3856 | msn | Query   | 24     | Locked                           | select id,title,indate,code, left(content,300) as content from article where ( id >= '20070309000000 |

| 46177 | xxxuser     | xxx.xxx.xxx.xx:3023 | msn | Query   | 18     | Locked                           | select id,title,indate,code, left(content,300) as content from article where ( id >= '20070309000000 |

| 46185 | xxxuser     | xxx.xxx.xxx.xx:2176 | msn | Query   | 3      | Locked                           | select id,title,indate,code, left(content,300) as content from article where ( id >= '20070309000000 |

| 46187 | root        | localhost           |     | Query   | 0      |                                  | show processlist                                                                                     |

+-------+-------------+---------------------+-----+---------+--------+----------------------------------+------------------------------------------------------------------------------------------------------+


xxx 는 이해해 주세요 ㅜㅜ


이런식으로 slave 에서 update 가 되면서 Locked 가 걸리고 그 후에 select 쿼리도 Locked 가 걸려서 접속 select 가 느려지는거 같습니다.


그래서 찾아 봤더니 DB 를 제시작하거나 정상 종료를 하지 않았을때 마스터와 슬레이브 통신(??) log 가 깨진다는군요.. 

그래서 그 로그에서 찾는데 오래 걸려서 Locked 걸리는거 같습니다.


이걸 해결 할 방법이 혹시 있나 해서 고수님들께 물어 볼라고 글 올립니다..


제가 mysql 실력이 허접해서 ㅜㅜ


혹시 같은 경험이나 해결책 아시는분 있으면 답변 부탁 드립니다..


그럼 읽어주셔서 감솨 ^_^;;


이 글에 대한 댓글이 총 1건 있습니다.

Slave 서버를 구동하면 기본적으로 두개의 쓰레드가 생성이 됩니다.

Slave_IO 와 Slave_SQL 쓰레드인데 하나는 마스터 서버의 바이너리 로그 파일의 업데이트를 담당하고

Slave_SQL 쓰레드는 마스터로 부터 가져온 relay_log 의 DDL, DML 등을 실행하는 역활을 합니다.


processlist 에서 

-- Slave_IO

1     | system user |                     |     | Connect | 354034 | Waiting for master to send event 

이 부분이 Slave_IO 쓰레이이며 상태는 현재 마스터의 바이너리 로그를 슬레이브의 relay_log 에 적용하고 있는중입니다.


-- Slave_SQL

| 2     | system user |                     | xxx | Connect | 44     | Locked                           | update xxxxx 

          set

 

            title='???? ?????? ?????.. ?????? ???????', content='     |

위는 SQL 실행 쓰레드 인데 현재 상태가 Locked 인것이 문제입니다.


다음 두개의 Select 가 update와 같은 테이블을 참조하고 있는것 같은데요

| 46159 | xxxuser     | xxx.xxx.xxx.xx:2718 | msn | Query   | 49     | Sorting result                   | select id, title, subtitle, left(content,300) as content, idx, indate, left(indate,10) as d, right(i |

| 46164 | xxxuser     | xxx.xxx.xxx.xx:2878 | msn | Query   | 42     | Sorting result                   | select id, title, subtitle, left(content,300) as content, idx, indate, left(indate,10) as d, right(i |


이 슬로우 쿼리의 튜닝이 선행 되어야 합니다.


 

S초보님이 2007-03-16 16:47에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
26507Decimal 타입과 Double 타입에 관해 의견을 주세요..
고영호
2007-03-16
2002
26506한글 인코딩 문제... [1]
공성랑
2007-03-16
2815
26505데이타가 삭제가 되지 않아 하드가 꽉차요? 도와주세여~~ [2]
mysql pan
2007-03-16
1986
26503리플리케이션 에 관해.. [1]
박성민
2007-03-16
2060
26502Mysql 한글 에러 (고수님들 부탁드려요~) [1]
공성랑
2007-03-16
2778
26501태국어(thai)를 쓰려고 하는데요..
김종섭
2007-03-15
2474
26500쿼리문 질문드리겠습니다. [1]
김두홍
2007-03-15
2035
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다