서브메뉴

본문

MySQL Troubleshooting (쿼리 문제 원인을 알면 해결은 쉽다)
MySQL Troubleshooting (쿼리 문제 원인을 알면 해결은 쉽다)
저자 : 스베타 스머노바
출판사 : 한빛미디어
출판년 : 2013
ISBN : 9788979149999

책소개

MySQL 문제 해결 가이드!

MySQL을 운영하면서 생기는 문제의 원인과 해결 방법, 예방법을 자세히 소개하는 『MySQL Troubleshooting』. 멀티스레드 환경에서 애플리케이션을 실행할 때 발생하는 문제와, MySQL 환경 설정 때문에 발생한 문제를 디버깅하고 해결하는 방법을 다룬다. 아울러, 운영 체제 튜닝이 서버에 미치는 영향과 데이터를 이중화할 때 필요한 특별한 문제 해결 기법을 소개한다.
[교보문고에서 제공한 정보입니다.]

출판사 서평

이 책이 제시하는 핵심 내용

MySQL을 운영하면서 생기는 문제의 원인과 해결 방법, 예방법을 자세히 소개한다.

이 책의 특징과 장점

· 멀티스레드 환경에서 애플리케이션을 실행할 때 발생하는 문제를 해결한다.
· MySQL 환경 설정 때문에 발생한 문제를 디버깅하고 해결한다.
· 운영 체제 튜닝이 서버에 미치는 영향을 이해한다.
· 데이터를 이중화할 때 필요한 특별한 문제 해결 기법을 소개한다.
· 서드파티 솔루션 및 추가적인 문제 해결 기법과 도구 정보를 제공한다.

어떤 독자를 위한 책인가?

· MySQL을 운영하고 있는 데이터베이스 관리자
· MySQL과 연동한 애플리케이션을 개발하는 개발자
· 각 회사의 MySQL 기술 지원 담당자
· MySQL을 능숙하고 다루기 원하는 대학생

도서 특징(책 표지 글)

버그, 성능 저하, 치명적 오류, 데이터 훼손, 엉뚱한 데이터가 출력되는 문제 등은 데이터베이스 관리자나 DBA라면 늘 겪는 일이다. 이런 문제 해결의 지름길은 원인 분석이다. 원인만 알면 문제는 금방 해결할 수 있다. 이 책은 원인 분석이라는 흐름 속에서 놓치기 쉬운 간단한 문제 해결법부터, 문제 예방을 위한 MySQL 환경 설정법, 서드파티 솔루션 문제 해결 등 MySQL에서 발생하는 여러 가지 장애를 해결하는 방법을 풍부한 예제로 설명한다. 빅데이터가 주목받으면서 NoSQL 데이터베이스에 관한 관심이 높아졌지만 MySQL은 여전히 데이터베이스 관리와 분석의 기본이다. 이 책과 함께 데이터베이스 전문가로 도약해보자.

지은이 서문

필자는 2006년 5월부터 MySQL AB(이후 썬에, 그 다음에는 오라클에 합병되었다)의 MySQL 지원 그룹 버그 검증팀에서 수석 기술 지원 엔지니어로 근무해왔다. 그러면서 업무를 통해 어떤 문제에 막혀 그 다음에는 어떻게 해야 할지 알지 못해 전전긍긍해 하는 사용자들을 종종 보아왔다. 문제의 원인을 찾고 효과적으로 해결하는 제대로 검증된 방법들이 있지만 쏟아지는 정보 속에서 검증된 방법을 추려내기는 매우 힘들었다. 물론 책, 블로그, 웹 페이지에 있는 수백 가지 정보들이 MySQL 서버의 여러 부분을 자세히 설명하고 있다. 그러나 이 정보들은 MySQL 서버가 정상적으로 작동하는 방법을 설명하는 데 주안점을 두고 있으며, 장애나 오작동의 원인을 찾아내는 방법은 설명하지 않으므로 문제 해결이 어렵다.
사실 앞에서 소개한 정보들을 잘 조합하면 MySQL을 운용하는 데 필요한 모든 측면을 자세히 설명할 수 있다. 하지만 문제가 발생하는 원인을 알지 못하면 문서가 설명하는 수십 가지 가능한 원인 중에 진짜 원인을 알아낼 수 없다. 여러분이 전문가에게 문제의 원인을 물어봐도 전문가는 여러 가능성만을 나열할 수 있을 뿐, 결국 진짜 원인은 여러분이 찾아내야 한다. 진짜 원인을 찾아내지 못하고 수정하면 문제를 일시적으로 숨기거나 더 악화시킬 뿐이다.
따라서 SQL 문장이나 설정 옵션을 바꿔 문제가 사라지더라도 문제의 원인을 파악하는 것은 정말 중요하다. 문제의 원인을 알면 문제를 영원히 해결할 수 있고 향후에 같은 문제가 재발되지 않게 할 수 있다.
이 책은 SQL 애플리케이션이나 MySQL 설정에서 발생하는 에러의 원인을 찾아내고 문제를 해결하기 위해 필자가 사용해온 방법을 설명한다.
[교보문고에서 제공한 정보입니다.]

목차정보

1장 기본적인 문제

__1.1 잘못된 구문

__1.2 SELECT문의 잘못된 결과

__1.3 이전 갱신에 의한 문제

__1.4 쿼리 결과 확인하기

__1.5 데이터 에러 추적하기

__1.6 느린 쿼리

____1.6.1 EXPLAIN 명령의 정보로 쿼리 튜닝하기

____1.6.2 테이블 튜닝과 인덱스

____1.6.3 최적화를 멈춰야 할 때

____1.6.4 옵션의 영향

____1.6.5 데이터를 수정하는 쿼리

____1.6.6 만병통치약은 없다

__1.7 서버 응답이 없을 때

__1.8 스토리지 엔진 고유의 문제

____1.8.1 MyISAM 손상

____1.8.2 InnoDB 손상

__1.9 권한 문제



2장 동시성 문제

__2.1 락과 트랜잭션

__2.2 락

____2.2.1 테이블 락

____2.2.2 행 락

__2.3 트랜잭션

____2.3.1 숨어 있는 쿼리

____2.3.2 데드락

____2.3.3 암묵적 커밋

__2.4 메타데이터 락

____2.4.1 메타데이터 락과 구형 모델

__2.5 동시성이 성능에 미치는 영향

____2.5.1 동시성 문제에 대해 InnoDB 트랜잭션 감시하기

____2.5.2 동시성 문제에 대해 다른 리소스 감시하기

__2.6 그 외의 락 문제

__2.7 이중화와 동시성

____2.7.1 문장 기반 이중화의 문제

____2.7.2 트랜잭션과 비트랜잭션 테이블 혼합하기

____2.7.3 보조 서버에서 발생하는 문제

__2.8 MySQL 문제 해결 도구를 효과적으로 사용하기

____2.8.1 SHOW PROCESSLIST 명령과 INFORMATION_SCHEMA.PROCESSLIST 테이블

____2.8.2 SHOW ENGINE INNODB STATUS 명령과 InnoDB 모니터

____2.8.3 INFORMATION_SCHEMA 테이블

____2.8.4 PERFORMANCE_SCHEMA 테이블

____2.8.5 로그 파일



3장 서버 옵션 영향

__3.1 서비스 옵션

__3.2 서버 작동을 바꾸는 변수

__3.3 하드웨어 리소스 제한 옵션

__3.4 --no-defaults 옵션

__3.5 성능 옵션

__3.6 서두르면 망친다

__3.7 SET문

__3.8 옵션 영향 확인 방법

__3.9 변수 설명

____3.9.1 서버와 클라이언트에 영향을 주는 옵션

____3.9.2 성능에 관련된 옵션

____3.9.3 옵션에 대한 안전한 값 계산하기



4장 MySQL 환경

__4.1 물리적인 하드웨어 제한

____4.1.1 램

____4.1.2 프로세서와 코어

____4.1.3 디스크 I/O

____4.1.4 네트워크 대역폭

____4.1.5 지연 영향의 사례

__4.2 운영체제 제한

__4.3 다른 소프트웨어의 영향



5장 이중화 문제 해결

__5.1 보조 서버 상태 표시하기

__5.2 I/O 스레드 문제 해결하기

__5.3 SQL 스레드 문제 해결하기

____5.3.1 주 서버와 보조 서버의 데이터가 다를 때

____5.3.2 순환 이중화와 보조 서버에 비이중화 쓰기

____5.3.3 불완전하거나 변경된 SQL문

____5.3.4 주 서버와 보조 서버에서 다른 에러

____5.3.5 환경 설정

____5.3.6 보조 서버가 주 서버보다 실행 속도가 많이 느릴 때



6장 문제 해결 기법과 도구

__6.1 쿼리

____6.1.1 느린 쿼리 로그

____6.1.2 사용자가 정의할 수 있는 도구

____6.1.3 MySQL 명령행 인터페이스

__6.2 환경의 영향

__6.3 샌드박스

__6.4 에러와 로그

____6.4.1 다시 보는 에러 정보

____6.4.2 크래시

__6.5 정보 수집 도구

____6.5.1 정보 스키마

____6.5.2 InnoDB 정보 스키마 테이블

____6.5.3 InnoDB 모니터

____6.5.4 성능 스키마

____6.5.5 SHOW [GLOBAL] STATUS

__6.6 문제 단순화하기(테스트 케이스의 최소화)

__6.7 문제를 해결하는 일반적인 단계

__6.8 테스트 방법

____6.8.1 새로운 버전에 쿼리 시도하기

____6.8.2 알려진 버그 확인하기

____6.8.3 문제 회피하기

__6.9 특별한 테스트 도구

____6.9.1 벤치마크 도구

____6.9.2 Gypsy

____6.9.3 MySQL 테스트 프레임워크

__6.10 유지 보수 도구

____6.10.1 MySQL 배포판에 제공되는 도구

____6.10.2 퍼코나 툴킷

____6.10.3 MySQL WB 유틸리티

____6.10.4 모니터링 도구



7장 좋은 습관

__7.1 백업

____7.1.1 백업 계획하기

____7.1.2 백업의 종류

____7.1.3 도구

__7.2 필요한 정보 수집하기

____7.2.1 이 모든 정보가 의미하는 것은

__7.3 테스트

__7.4 예방

____7.4.1 권한

____7.4.2 환경

__7.5 생각해볼 거리



부록 참고 자료

__유용한 정보가 담겨 있는 참고 자료

__버그와 지식 데이터베이스

__온라인 포털

__도움을 요청할 수 있는 곳

__책
[알라딘에서 제공한 정보입니다.]