본문 바로가기

mysql63

MySQL 쿼리 실시간 모니터링 및 저장하기 제 목 : MySQL 쿼리 실시간 모니터링 및 저장하기 작성자 : 좋은진호(truefeel, http://coffeenix.net/ ) 작성일 : 2008.11.24(월) MySQL서버는 log 옵션(my.cnf에서 log=파일명. slow query는 log-slow-queries=파일명)을 통해서 실행된 DB 쿼리를 모두 파일로 저장할 수가 있다. 그러나 DB 서버에서 작은 사이트가 아니고선 엄청난 양의 실시간 쿼리를 모두 쌓는다는 것은 힘들다. DB 운영도중에 잠시동안 쿼리 로그를 쌓겠다고 MySQL 재실행할 수도 없는 노릇이다. MySQL 5.1에서는 재실행없이 로그를 쌓을 것인지 안할 것인지를 결정할 수 있지만, 이부분은 뒤에서 설명하기로 하고, DB 쿼리를 실시간으로 살펴보는 몇가지 방법을 소.. 2009. 4. 29.
MySQL 인젝션 공격 방어하는 GreenSQL GreenSQL( http://www.greensql.net/ )은 MySQL에 대한 SQL 인젝션(Injection) 공격을 방어하는 프락시 개념의 어플리케이션이다. 웹페이지를 호출하면 DB쿼리는 먼저 GreenSQL 로 넘어겨지고, 검사한 후 정상적이면 MySQL 서버로 요청하는 과정을 거친다. GreenSQL을 설치하고 실행과정은 이렇다. MySQL 서버는 기존 그대로 실행(디폴트 3306 포트)하고, GreenSQL을 3305포트로 실행(127.0.0.1:3305)한다. 이 때 GreenSQL은 MySQL 서버로 커넥션이 이뤄진다. 웹페이지는 DB커넥션을 GreenSQL의 3305포트로 커넥션하도록 변경해주면 된다. (MySQL을 3305로, GreenSQL을 3306으로 실행할 수도 있을 것이다.. 2009. 4. 28.
MySql 쿼리 디버깅을 위한 방법 - syslog PHP를 이용하여 웹 어플리케이션을 작성 할 때 난감한 이슈 중의 하나는 Database query를 찍어보는 것이다. echo나 print로 로그를 찍게 되면, 화면에 직접 출력되기 때문에 만약 운영중인 웹 어플리케이션이라면 화면 가득 쏟아져 나온 쿼리를 보게 될 것이다. 단순하게 파라미터나 그 밖의 변수를 찍어 보는 정도라면 echo나 print가 적당할 수도 있겠지만, 쿼리를 찍는다는건 긴 스트링일 가능성이 크기 때문에 그리 추천할 만 한 방법은 아니다. IBM 디벨로퍼웍스에서는 PHP 웹 어플리케이션 디버깅 시에 사용할 만한 좋은 기법으로 syslog()에 대한 아티클을 게재한 바 있다. syslog로 PHP 프로그램 디버깅하기 (한글) [원문보기] PHP에서 syslog 함수는 아래와 같이 정의.. 2009. 4. 28.
MySQL 사용 중 발생할 수 있는 대기 현상 장애의 원인과 대처 다음의 경우는 필자가 몇 년 동안 MySQL을 운영하면서 겪었던 장애 현상 중 대기 현상을 유발해 장애를 발생시키는 원인들을 정리한 것이다. - DDL 작업 진행 시 - Table Flush 진행 시 - mysqldump를 이용해 백업이 진행되는 경우 - Table Lock을 사용하는 경우 - Serializable Isolation Level을 사용하는 경우 위의 다섯 가지 경우를 하나씩 살펴보자. 참고로 테스트에 사용된 MySQL 버전은 MySQL Community 버전 5.0.67로, MyISAM과 InnoDB를 대부분 사용했기 때문에 여기 나온 내용은 그 사항에 특화된 것임을 밝힌다. DDL 작업 진행 시 사실 MySQL을 오랫동안 운영해본 사람이라면 MySQL에서의 DDL 작업이 쉬운 작업이 아.. 2009. 4. 23.
MySQL 5.1 Server System Variables (시스템변수) MySQL 서버는 서버가 어떻게 구성되었는지를 가리키는 많은 시스템 변수들을 유지 관리 한다. 각 시스템 변수는 디폴트 값을 가지고 있다. 시스템 변수들은 명령어 라인 또는 옵션 파일에서 옵션을 사용하여 서버 스타트업 때 설정될 수 있다. 대부분의 것들은 서버가 구동되고 있는 동안에 SET 명령문을 가지고 동적으로 변경할 수 있는데, 이 명령문은 서버를 종료하고 재 구동 시키지 않는 상태에서 서버 동작을 수정할 수 있다. 여러분은 수식 안에 있는 시스템 변수를 참조할 수도 있다. 시스템 변수 이름과 값을 볼 수 있는 방법은 여러 가지가 있다: 서버가 디폴트 및 옵션 파일에서 읽는 변수 값을 보기 위해서는, 아래의 명령어를 사용한다: mysqld --verbose --help 옵션 파일에 있는 설정 값은 .. 2009. 3. 12.