안드로이드 앱을 만들고 python을 이용해서 서버를 작성하고 있는 학생입니다. database로는 MySQL을 선택해서 진행하고있었습니다. 시중에 기본적으로 MySQL Syntax와 데이터 베이스 설계방법에 대한 책들은 많이나와있었는데 이번 책은 실전에서 눈으로 확인할 수 있는 성능 향상에 대해 나온 책이라서 더 기대가 되서 읽게營윱求
MySQL Troubleshooting은 기본적인 SQL을 가르쳐주는 책이 아니다. MySQL을 통해 프로젝트를 진행하는 초급 이상의 개발자에게 어떻게 하면 프로젝트 중 일어나는 MySQL 오류를 해결할 수 있을까 미리 이야기 해준다.
다른 그 흔한 MySQL 책들이 단순한 쿼리의 나열과 컴퓨터화면을 캡쳐한 것을 조합한 수준이라면, 이 책은 처음 부분에 기본적인 에러, DB 시스템을 느리게 하는 쿼리에 대해 이야기 하고, 3장에서 서버의 설정에 따라 달라지는 상황을 언급한다. 무엇이 잘못되어 있는지 완벽히 확신할 수 없다면 설정을 하나씩 추가하며 설정 파일을 테스트한다는 것. 이 말은 간단한 말이지만, 체계적으로 테스트하지 않았던 내게 도움이 되는 부분이었다.
이 책의 핵심은 6장인 "문제 해결 기법과 도구"라고 생각하는데, 물론 초급, 중급 개발자의 다루는 업무에 따라 이 책을 통해 학습할 부분이 다르다고 생각한다. 6장에서 문제 단순화하는 것에서 시작해서 문제 해결하는 단계, 그리고 테스트하고 유지보수 하는 것을 세세히 설명하는데 이 부분이 책을 읽는 이들에게 도움이 될 것 같다. 나에게는 MySQL 테스트 프레임워크 부분의 설명과 예제가 도움이 되었고 이를 프로젝트 관련해서 적용해 보려한다.
프로젝트 DBMS를 평소 Oracle로 작업하던 것을 MySQL로 바꿔 진행하게 되었다. MySQL에서는 잘못된 구문 이외에는 문제가 없을 것이라고 생각했고, 특별히 대비해야 할 것이 없다고 생각했었다. 하지만 이 책을 통해 DB권한문제에 있어서 평소 명확히 알지 못했던 부분을 알게 되었다. MySQL 테스트 방법과 테스트 및 유지보수도구를 정리한 부분이 이 책을 두고두고 찾아봐야 하는 이유라고 생각한다. 여러 번 강조해도 지나치지 않다.
우선 책의 저자가 오라클 사 MySQL 지원그룹의 버그 검증 팀에서 수석 기술 엔지니어로 근무하고 있다는 사실만으로도 이 책의 가치가 말 그대로 "넘사벽"으로 평가 되지 않을까. 저자가 오랜 기간동안 MySQL 전문가로 다른 엔지니어들을 도운 사례를 통해 설명하기 때문에 실제 프로젝트를 진행 중인 DB 담당자들이 여러 번 참고할 만한 책이라고 생각한다.
또 번역서임에도 불구하고 책 내용이 의미전달이 원활했던 것은 실제 개발을 오랜기간 동안 했던 강권학 개발자께서 했기 때문인 것 같다.
제목에서 바로 알 수 있듯이 MySQL에 관련된 트러블슈팅을 설명한 책이고, O’REILLY에서 나온 책을 번역한 역서이다. 대략적인 책의 구성은 Query 관련한 문제 해결 방안, 동시성 문제, 서버 옵션, 물리적인 환경, 이중화 관련 문제 순으로 설명이 되어 있고, 마지막 2장은 종합적으로 정리한 문제 해결 기법과 도구, 그리고 좋은 습관에 대해 설명하고 있다.
우선 책의 저자가 MySQL 초창기 시절부터 15년 이상 버그 검증 수석 엔지니어로 활동해온 베테랑이라서 Troubleshooting을 설명하는 내용에서 깊이가 느껴진다. 그리고, 이런 번역서는 번역이 책의 품질의 50%를 좌우하는데, 다행히 번역자가 IT업계에서 일하면서 영어에도 능통해 전체적인 내용이 매끄럽게 흘러가는 게 큰 장점이다. 또한 무엇보다도 책의 내용이 세세한 기술적인 문제 해결에만 치우치지 않고, 큰 관점에서의 문제 해결 방안도 설명해주는게 무척 마음에 들었다. 예를 들어, MySQL 관련한 문제를 마주하게 되었을 때 전체적인 관점에서 문제해결 계획을 세우는 방법을 알려주었고, 또한 문제 해결을 위한 좋은 습관을 책 말미에 가르쳐 주고 있다. 이런 큰 그림을 그리고 좋은 습관은 비단 MySQL뿐만 아니라 다른 DBMS에 대한 Troubleshooting에도 적용할 수 있어서 IT에 처음 입문하는 초급 엔지니어에게도 무척 유용할 것이라는 생각이 들었다.
개인적으로 최근 지원하는 프로젝트가 MySQL을 사용하는데, 나로서는 MySQL을 실무에서는 처음 접하는 상태였다. 다른 상용 DBMS들과 큰 차이가 별로 없을 테니 금방 익숙해질거라 스스로를 자위하던 차에 이 책을 만났다. 책을 다 읽고 나니 역시 총론에서는 다른 DBMS와 큰 차이가 없지만, 개론으로 들어가면 많은 차이가 있어서 공부를 많이 해야겠다는 생각이 들었다. 가뜩이나 Open Source DBMS에 대해서는 지원하는 엔지니어도 부족하고 정보도 꽤 많이 부족한데 이런 문제 해결 가이드가 나와서 참으로 반가웠다. 책상머리에 두고 필요할 때마다 자주 참고할만한 좋은 책이라 생각한다.
유명한 O"REILLY MySQL Troubleshooting 을 한국어로 읽을 수 있는 기회를 잡았다. 300페이지 가량의 책이지만 내용은 결코 만만하지 않다. 이 책에 부제를 넣는다면 거창해 보일수도 있는 "MySQL DBA로 가는 길"이라고 하고 싶다.
애플리케이션 개발자들이 RDBMS의 적용을 쉽게 생각하고, 적용해 버리고, 결국 DBA에 대한 지식이 없어 장애를 해결하지 못하여 실패하는 사례들을 보아 왔다. RDBMS는 생명체와 같다. 애플리케이션이 RDBMS를 지원하는데서 끝나지 않는다. RDBMS는 잘 보살펴 주지 않으면 게으름을 피우거나, 엉뚱한 작업을 하거나 심하면 생명이 꺼져 버리기도 한다.
이 책은 이미 SQL에 대한 기본 지식이 있는 독자를 대상으로 한다. SQL 문법, 정규화 등은 알고 있어야 한다.
이 책에서 MySQL을 사용하는 프로젝트의 개발, 테스트, 운영 과정에서 발생하는 대부분의 지식을 담고 있다. 손상으로부터의 복구, 운영 정보 수집, 에러 추적, 장애의 해결, 성능 튜닝, 테스트, 샌드박스 사용법, 설정, 보조 서버 운영, 백업, 플러그인의 구조와 차이점, MySQL이 가진 버그를 확인하고 회피하는 방법, MySQL 운영을 돕는 도구 등에 대한 지식을 얻을 수 있었다.
무엇보다 필자가 MySQL 개발과 테스트에 참여한 자신과 동료들의 경험을 살려 MySQL 내부 동작을 설명을 하여 이해를 쉽게 도와주는 점이 큰 장점이다.
이 책의 "원서"에 따른 내용이겠지만, "MySQL 운영을 돕는 서드파트 도구"들에 소개가 반갑긴 하지만 사용법과 예제가 없는 점이 아쉽다. 이부분은 따로 검색해서 봐야 한다.
이 책은 MySQL을 통해 응용 소프트웨어를 개발하려는 개발자, 개발 사업을 추진하는 책임자급 엔지니어, MySQL 전문가가 되고 싶은 입문자들, 특히 RDBMS를 구성, 운영을 해야 하는 IT기업 오너들에게 권한다.