SlideShare a Scribd company logo
1 of 54
Day #3 
MySQL monitoring, troubleshooting 
Certified Partner by
2 
- Internal Use Only - 
목차 
MySQL monitoring tool 
소개 및 필요성 
모니터링의 기능 
MysqlReport 
MySQL workbench 
MySQL troubleshooting 
explain 사용법 
query profiling 활용법 
error Log 및 slow query 활용법 
core file dump 작성 및 활용법 
MySQL upgrade
MySQL Monitoring tool 
Certified Partner by
4 
- Internal Use Only - 
데이터베이스 모니터링 소개 및 필요성 
데이터베이스 모니터링이란? 
왜 데이터베이스 모니터링이 요구되어지는가? 
•특정대상(서비스, 정책, 물리적 장치 등)에 대해 감시, 형태분석, 시정활동을 하는 행위 
•리포팅 모니터를 바라보고 있는 행위 
•시스템 진단, 문제해결 
•물리적 장비, 특정 서비스 리포팅 
•오류감지 
•문제에 대한 경고
5 
- Internal Use Only - 
데이터베이스 모니터링 기능 
모니터링의 기능 모니터링을 이용해 시스템의 상태를 캡처하여 통계를 작성/ 분석할 수 있으며 오류를 감지하거나 담당자에게 통보할 수 있음 
시스템 상태 캡처 통계 
•문제해결, 진단에 유용 
•그래프 / 차트를 이용하기에 매우 편리함 
•놓치고 넘어갈 수 있는 부분들에 대한 리포트 
오류감지 
•시스템 상태 모니터 
•문제에 대한 경고
6 
- Internal Use Only - 
데이터베이스 모니터링 툴의 종류 
상용 제품 
오픈소스 제품군 
데이터베이스 모니터링 툴제품군 오픈소스 툴들은 100% 무료이며 수 많은 플러그인 기능 및 충분한 기능을 제공
7 
- Internal Use Only - 
데이터베이스 모니터링 툴 제품군 비교 
Mysql Enterprise Monitor 
Nagios 
Cacti 
Zabbix 
라이선스 구분 
licence 
subscribtion 
free 
free 
licence 
free 
기술지원업체 
mysql 
nagios 
자체 
자체 
zabbix 
지원 제품 
Mysql Enterprise Monitoring 
Nagios XI 
Cacti 
준비 중 
추가 
구성 제품 
- 
- 
Many plug-ins 
Many plug-ins 
준비 중 
장비소요 
1대 
1대 
1대 
준비 중 
특징 
깔끔한 UI 
다른 툴에서는 제공하지 않는 
Adviser, query analyzer 제공 
user custom 가능 
무료 Eazy Install / Control / use 
준비 중 오픈소스 데이터베이스 클러스터 제품군 비교표.
8 
- Internal Use Only - 
MySQL Enterprise Monitor MySQL 네트워크 모니터링 및 어드바이저 서비스는 여러분의 MySQL 서버를 지속적으로 모니터 하여 잠재적인 문제가 시스템에 영향을 주기 전에 여러분에게 경고를 해 줍니다 특징 
MySQL 서버의 상태를 자세히 보여 줌 
여러 대의 MySQL 서버를 마치 하나의 그룹처럼 관리함 
MySQL을 설치한 개발자의 어드바이저 룰을 65까지 구동가능 
문제 영역을 구분해 줌으로써 보다 빨리 문제를 해결 
전문가의 지원으로 MySQL의 보안, 성능 리플리케이션 문제 빠르게 개선 
자체 개발 스크립트를 작성, 디버깅, 그리고 관리시간 감소효과 
특정 MySQL 환경에 맞게 커스텀 룰을 구축 
정기적으로 새로운 룰을 받으실 수가 있습니다.
9 
- Internal Use Only - 
MySQL Enterprise Monitor architecture 
Database server 
Monitor agent 
수집 
결과 
MySQL Monitor 
Database server 
Monitor agent 
수집 
결과 
Database server 
Monitor agent 
수집 
결과 
수집 결과 
수집 결과 
수집 결과
10 
- Internal Use Only - 
MySQL Enterprise Monitor 장점 및 단점 장점 
MySQL Adviser 제공 
MySQL query analyzer 제공 단점 
Monitoring 제품만 따로 구입 불가 
Galera Cluster 미지원
11 
- Internal Use Only - 
Cacti 소개 오픈 소스에 대한 프런트 엔드 응용 프로그램으로 디자인 된 오픈 소스, 웹 기반 네트워크 모니터링 및 그래프 도구입니다 특징 
무제한 그래프 항목 
자동 패딩 지원 그래프 
그래프 데이터 조작 
유연한 데이터 소스 
데이터 표준이 아닌 시간 범위에서 수집 
사용자 정의 데이터 수집 스크립트 
SNMP 지원 내장 
그래프 템플릿 
데이터 소스 템플릿 
호스트 템플릿 
그래프 데이터의 트리, 목록 및 미리보기 
사용자 기반 관리 및 보안
12 
- Internal Use Only - 
Cacti 소개 사용자 임의로 구성 가능한 View 목록과 그래프 구성
13 
- Internal Use Only - 
Cacti 다양한 항목의 그래프
14 
- Internal Use Only - 
Cacti 다양한 플러그인 템플릿
15 
- Internal Use Only - 
모니터링 서버 
snmp 
Cacti 활용 
원격지의 서버들도 한 곳에서 관리/모니터링 가능
16 
- Internal Use Only - 
Nagios 시스템 및 네트워크 모니터링 프로그램, 지정한 호스트와 서비스를 관찰하고 장애 발생/복구되었을 때 경보를 발령. 특징 
네트워크 서비스 모니터링(SMTP, POP3, HTTP, NNTP, PING, 등) 
호스트 자원 모니터링(프로세서 부하, 디스크 사용량, 등) 
자신들의 서비스 체크할 플러그인을 쉽게 개발할 수 있도록한 간단한 플러그인 디자인 
병렬화된 서비스 체크 
다운된 호스트와 통신되지 않는 호스트의 탐지와 구분을 가능하게 하는 트리구조의 네트워크 호스트 구조정의 기능 
서비스 또는 호스트의 문제가 발생하거나 해결되었을 때 통보(이메일, SMS, 사용자정의 방법) 
서비스 또는 호스트 이벤트의 사전 문제 해결시 실행될 이벤트 핸들러 정의기능 
자동 로그 파일 순환 
모니터링 호스트 이중화 지원 
현재 네트워크 상태, 통보와 문제발생 이력, 로그파일등을 보기 위한 선택적 웹 인터페이스
17 
- Internal Use Only - 
Nagios 다양한 항목의 그래프
18 
- Internal Use Only - 
MySQLReport mysqlreport는 MySQL 서버의 STATUS 값들을 관리자가 보기 편한 형식으로 리포팅 해주는 perl 스크립트 
1.download 
2.install perl DBI/DBD::mysql 
wget "http://hackmysql.com/scripts/mysqlreport" 
prompt> perl -MDBI -e 'print "$DBI::VERSIONn"' prompt> perl -e "use DBI" 
아래의 명령어를 이용하여 설치 확인 : 
결과 : 
cpan> install DBI 
prompt> sudo cpan install DBI 
설치 명령어 :
19 
- Internal Use Only - 
MySQLReport 
2.install perl DBD::mysql 
prompt> perl -MDBD::mysql -e'print "$DBD::mysql::VERSIONn"' 
prompt> perl -e "use DBD::mysql" 
아래의 명령어를 이용하여 설치 확인 : 
결과 : 
cpan> install DBD::mysql prompt> sudo cpan install DBD::mysql 
설치 명령어 : 
mysql_config 를 찾지못한다고 오류가나면 $PATH를 추가하고 다시 한다. 
DB 테스트하는 과정에서 오류가 난다면 
•$HOME/.cpan/ 디렉토리의 설치문서를 본다. 
•$ vi /root/.cpan/build/DBD-mysql-4.008/INSTALL.html
20 
- Internal Use Only - 
MySQLReport mysqlreport는 MySQL 서버의 STATUS 값들을 관리자가 보기 편한 형식으로 리포팅 해주는 perl 스크립트 
__ Key _______________________________________________ Buffer used 54.59M of 384.00M %Used: 14.22 Current 95.05M %Usage: 24.75 Write ratio 0.723 Read ratio 0.000 __ Questions _________________________________________ Total 407.16M 94.8/s Com_ 386.15M 89.9/s %Total: 94.84 DMS 37.63M 8.8/s 9.24 -Unknown 37.61M 8.8/s 9.24 COM_QUIT 21.00M 4.9/s 5.16 QC Hits 107 0.0/s 0.00 Slow 6.89k 0.0/s 0.00 %DMS: 0.02 DMS 37.63M 8.8/s 9.24 SELECT 36.57M 8.5/s 8.98 97.18 INSERT 1.06M 0.2/s 0.26 2.81 UPDATE 3.50k 0.0/s 0.00 0.01 DELETE 27 0.0/s 0.00 0.00 REPLACE 0 0/s 0.00 0.00 Com_ 386.15M 89.9/s 94.84 stmt_prepar 171.28M 39.9/s 42.07 stmt_close 171.27M 39.9/s 42.06 stmt_execut 37.61M 8.8/s 9.24 
__ SELECT and Sort _____________________________________ Scan 28.49M 6.6/s %SELECT: 77.90 Range 9 0.0/s 0.00 Full join 0 0/s 0.00 Range check 0 0/s 0.00 Full rng join 0 0/s 0.00 Sort scan 17 0.0/s Sort range 0 0/s Sort mrg pass 10 0.0/s __ Query Cache _________________________________________ Memory usage 8.58k of 32.00M %Used: 0.03 Block Fragmnt 100.00% Hits 107 0.0/s Inserts 5.62k 0.0/s Insrt:Prune 5.62k:1 0.0/s Hit:Insert 0.02:1 __ Table Locks _________________________________________ Waited 20.69k 0.0/s %Total: 0.01 Immediate 175.76M 40.9/s __ Tables _____________________________________________ Open 171 of 512 %Cache: 33.40 Opened 654 0.0/s
21 
- Internal Use Only - 
MySQL WorkBench MySQL의 워크 벤치는 데이터베이스 설계자, 개발자, DBA를위한 통합 비주얼 도구입니다. MySQL의 워크 벤치는 데이터 모델링, SQL 개발 및 서버 구성, 사용자 관리, 백업 및 훨씬 더 포괄적 인 관리 도구를 제공합니다. MySQL의 워크 벤치 윈도우, 리눅스 및 Mac OS X에서 사용할 수 있습니다
22 
- Internal Use Only - 
MySQL WorkBench
23 
- Internal Use Only - 
MySQL WorkBench
MySQL troubleshooting 
Certified Partner by
Query Profiling 활용법 
Certified Partner by
26 
- Internal Use Only - 
Query Profiling MySQL 5.1 버전 이후 내장 기능 
현재 세션 과정 동안 실행 문에 대한 리소스 사용을 나타냄 
프로파일링 과정 
> set profiling=1; 
프로파일링을 설정해준다. 
> Select * from store; 
> Show profiles; 
분석할 쿼리 
분석 시작 
Query ID
27 
- Internal Use Only - 
Query Profiling 
> show profile for query 1 
쿼리별 상세내역 
프로파일링 과정 
Query ID 
해당 쿼리의 실행 내역
Explain 활용법 
Certified Partner by
29 
- Internal Use Only - 
Explain 활용법 MySQL이 SELECT 명령문을 실행하는 방법에 대한 정보를 얻기 위한 수단 
MySQL은 쿼리 실행 플랜(query execution plan) 정보를 옵티마이저 (optimizer)에서 가져 와서 출력 한다. 즉, MySQL은 테이블들이 어떤 순서로 조인(join)하는지에 대한 정보를 포함해서, SELECT를 처리하는 방법에 대해서 알려 준다. 
> Explain select * from store 
 id 
•SELECT 번호, 쿼리내의 SELECT 의 구분번호 
 Select type 
•SIMPLE: 단순 SELECT (UNION 이나 서브쿼리를 사용하지 않음) 
•PRIMARY: 가장 외곽의 SELECT 
•UNION: UNION 에서의 두번째 혹은 나중에 따라오는 SELECT 
•DEPENDENT UNION: UNION 에서의 두번째 혹은 나중에 따라오는 SELECT, 외곽쿼리에 의존적 
•UNION RESULT: UNION 의 결과물 
•SUBQUERY: 서브쿼리의 첫번째 SELECT 
•DEPENDENT SUBQUERY: 서브쿼리의 첫번째 SELECT, 외곽쿼리에 의존적 
•DERIVED: SELECT 로 추출된 테이블 (FROM 절 내부의 서브쿼리)
30 
- Internal Use Only - 
Explain 활용법 
> Explain select * from store 
 type 
System 
•테이블에 단 하나의 행만 존재(시스템 테이블). const join 의 특수한 경우 
const 
•많아야 하나의 매치되는 행만 존재할 때 
•PRIMARY KEY 나 UNIQUE index 를 상수와 비교할 때 
•각 컬럼값은 나머지 연산에서 상수로 간주, 처음 한번만 읽어들이면 되므로 매우 빠름 
eq_ref 
•조인수행을 위해 각 테이블에서 하나씩의 행만이 읽히는 경우 
•조인연산에 PRIMARY KEY 나 UNIQUE index 인덱스가 사용되는 경우 
•인덱스된 컬럼이 = 연산에 사용되는 경우 
ref 
•이 전 테이블과의 조인에 사용될 매치되는 인덱스의 모든행이 이 테이블에서 읽혀질 때 
•leftmost prefix 키만을 사용하거나 사용된 키가 PRIMARY KEY 나 UNIQUE 가 아닐때 
•(즉 키값으로 단일행을 추출할수 없을때) 
•사용된 키가 적은수의 행과 매치되면 이것은 적절한 조인 타입 
•ref 는 인덱스된 컬럼과 = 연산에서 사용됨 
ref_or_null 
•ref 와 같지만 NULL 값을 포함하는 행에대한 검색이 수반될 때 
•서브쿼리 처리에서 대개 사용됨 
•index_merge 
•인 덱스 병합 최적화가 적용되는 조인 타입 
•이 경우, key 컬럼은 사용된 인덱스의 리스트를 나타내며 
•key_len 컬럼은 사용된 인덱스중 가장 긴 key 명을 나타냄
31 
- Internal Use Only - 
Explain 활용법 
> Explain select * from store 
index_merge 
•인 덱스 병합 최적화가 적용되는 조인 타입 
•이 경우, key 컬럼은 사용된 인덱스의 리스트를 나타내며 
•key_len 컬럼은 사용된 인덱스중 가장 긴 key 명을 나타냄 
unique_subquery 
•몇몇 IN 서브쿼리 처리에서 ref 타입대신 사용됨 
•unique_subquery 는 성능향상을 위해 서브쿼리를 단순 index 검색 함수로 대체함 
index_subquery 
•unique_subquery 와 마찬가지로 IN 서브쿼리를 대체 
•단, 서브쿼리에서 non-unique 인덱스가 사용될때 동작 함 
range 
•인 덱스를 사용하여 주어진 범위 내의 행들만 추출 
•key 컬럼: 사용된 인덱스 
•key_len: 사용된 가장 긴 key 부분 
•ref 컬럼: 이 타입의 조인에서 NULL 
•키 컬럼이 상수와 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN 또는 IN 연산에 사용될때 적용됨 
index 
•인덱스가 스캔된다는걸 제외하면 ALL 과 같음 
•일반적으로 인덱스 파일이 데이타파일보다 작기 때문에 ALL 보다는 빠름 
•MySQL 은 쿼리에서 단일 인덱스의 일부분인 컬럼을 사용할때 이 조인타입을 적용함 
ALL 
•이전 테이블과의 조인을 위해 풀스캔 
•(조인에 쓰인) 첫번째 테이블이 고정이 아니라면 비효율적 
•대부분의 경우에 아주 느린 성능
32 
- Internal Use Only - 
Explain 활용법 
> Explain select * from store 
 possible_keys 
•MySQL 이 해당 테이블의 검색에 사용할수 있는 인덱스들 
•possible_keys 에 나타난 인덱스들이 결과에 나타난 테이블 순서에서 실제 사용할 수 없을수도 있음 
> Explain select * from store 
 key 
•MySQL 이 실제 사용한 key(index)
33 
- Internal Use Only - 
Explain 활용법 
> Explain select * from store 
 key_len 
•MySQL 이 사용한 인덱스의 길이, key 컬럼값이 NULL 이면 이값도 NULL 
•key_len 값으로 MySQL 이 실제 복수컬럼 키중 얼마나 많은 부분을 사용할 것인지 알 수 있음 
> Explain select * from store 
 ref 
•행을 추출하는데 키와 함께 사용된 컬럼이나 상수값
34 
- Internal Use Only - 
Explain 활용법 
> Explain select * from store 
 rows 
•쿼리 수행에서 MySQL 이 예상하는 검색해야 할 행수 
> Explain select * from store 
 extra 
•MySQL 이 쿼리를 해석한 추가적인 정보를 나타냄 Distinct : MySQL 이 매치되는 첫행을 찾는 즉시 검색을 중단한다는 의미 Not exists : MySQL 이 LEFT JOIN 을 수행함에 매치되는 한 행을 찾으면 더이상 매치되는 행을 검색x range checked for each record (index map: #) : MySQL 이 사용할 좋은 인덱스가 없음 의미 Using filesort : MySQL 이 정렬을 위해 추가적인 과정을 필요로 함 Using index : 컬럼정보가 실제 테이블이 아닌 인덱스트리에서 추출, 쿼리에서 단일 인덱스된 컬럼들만을 사용하는 경우 Using temporary : MySQL 이 결과의 재사용을 위해 임시테이블을 사용, 쿼리 내에 GROUP BY 와 ORDER BY 절이 각기 다른 컬럼을 사용할 때 발생 Using where : WHERE 절이 다음 조인에 사용될 행이나 클라이언트에게 돌려질 행을 제한하는 경우 테이블의 모든 행을 검사할 의도가 아니면 ALL 이나 index 라면 쿼리사용이 잘못된 것임 Using sort_union(…) , Using union(…) , Using intersect(…) Using index for group-by : Using index 와 접근방식이 같으며, 추가적인 디스크 접근 없이 GROUP BY 나 DICTINCT 쿼리에 사용된 모든 컬럼에 대한 인덱스를 찾았음을 의미
Error log 및 slow query 활용법 
Certified Partner by
36 
- Internal Use Only - 
Error log 활용법 
2013-09-11 03:07:51 51331 [Warning] 'user' entry 'root@eusamsdb01' ignored in --skip-name-resolve mode. 2013-09-11 03:07:51 51331 [Warning] 'proxies_priv' entry '@ root@eusamsdb01' ignored in --skip-name-resolve mode. 2013-09-11 03:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 03:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 04:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 04:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 05:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 05:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 06:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 06:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 07:09:52 UTC - mysqld got signal 11 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware. We will try our best to scrape up some info that will hopefully help diagnose the problem, but since we have already crashed, something is definitely wrong and this may fail. key_buffer_size=16777216 read_buffer_size=8388608 max_used_connections=234 max_threads=500 thread_count=189 connection_count=183 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 6167145 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. Thread pointer: 0xcf984700 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... 
Error log example 
Error 상황일 때 시스템 정보
37 
- Internal Use Only - 
Error log 활용법 
stack_bottom = 2b45c45f8def thread_stack 0x40000 
/app/mysql/bin/mysqld(my_print_stacktrace+0x35)[0x925a65] 
/app/mysql/bin/mysqld(handle_fatal_signal+0x3e8)[0x69b1b8] 
/lib64/libpthread.so.0[0x3db560f500] 
/app/mysql/bin/mysqld(_ZNK12Field_string4typeEv+0x19)[0x809679] 
/app/mysql/bin/mysqld(_Z10field_convP5FieldS0_+0x74)[0x810894] 
/app/mysql/bin/mysqld(_ZN10Item_field13save_in_fieldEP5Fieldb+0x44)[0x5c7464] 
/app/mysql/bin/mysqld(_Z12sp_eval_exprP3THDP5FieldPP4Item+0x88)[0x69baf8] 
/app/mysql/bin/mysqld(_ZN11sp_rcontext12set_variableEP3THDP5FieldPP4Item+0x1a)[0x6a60ca] 
/app/mysql/bin/mysqld(_ZN9sp_cursor24Select_fetch_into_spvars9send_dataER4ListI4ItemE+0x60)[0x6a6150] 
/app/mysql/bin/mysqld(_ZN19Materialized_cursor5fetchEm+0x4d)[0x6e8fbd] 
/app/mysql/bin/mysqld(_ZN9sp_cursor5fetchEP3THDP4ListI11sp_variableE+0xd0)[0x6a6b70] 
/app/mysql/bin/mysqld(_ZN15sp_instr_cfetch7executeEP3THDPj+0x34)[0x85c184] 
/app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] 
/app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] 
/app/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x44b5)[0x71a045] 
/app/mysql/bin/mysqld(_ZN13sp_instr_stmt9exec_coreEP3THDPj+0x60)[0x85c2c0] 
/app/mysql/bin/mysqld(_ZN12sp_lex_instr23reset_lex_and_exec_coreEP3THDPjb+0x234)[0x85c874] 
/app/mysql/bin/mysqld(_ZN12sp_lex_instr29validate_lex_and_execute_coreEP3THDPjb+0x99)[0x85e0c9] 
/app/mysql/bin/mysqld(_ZN13sp_instr_stmt7executeEP3THDPj+0x182)[0x85e3f2] 
/app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] 
/app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] 
/app/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x44b5)[0x71a045] 
/app/mysql/bin/mysqld(_ZN13sp_instr_stmt9exec_coreEP3THDPj+0x60)[0x85c2c0] 
/app/mysql/bin/mysqld(_ZN12sp_lex_instr23reset_lex_and_exec_coreEP3THDPjb+0x234)[0x85c874] 
/app/mysql/bin/mysqld(_ZN12sp_lex_instr29validate_lex_and_execute_coreEP3THDPjb+0x99)[0x85e0c9] 
/app/mysql/bin/mysqld(_ZN13sp_instr_stmt7executeEP3THDPj+0x182)[0x85e3f2] 
/app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] 
/app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] 
/app/mysql/bin/mysqld(_ZN14Event_job_data7executeEP3THDb+0x5cc)[0x7c254c] 
/app/mysql/bin/mysqld(_ZN19Event_worker_thread3runEP3THDP28Event_queue_element_for_exec+0xe1)[0x8ac111] 
/app/mysql/bin/mysqld(event_worker_thread+0x54)[0x8ac1d4] 
/app/mysql/bin/mysqld(pfs_spawn_thread+0x13b)[0xae995b] 
/lib64/libpthread.so.0[0x3db5607851] 
/lib64/libc.so.6(clone+0x6d)[0x3db52e767d] 
Trying to get some variables. 
Some pointers may be invalid and cause the dump to abort. 
Query (d15f6010): CALL scop_pm.PPM_HDLR_05_DATA(DATE_FORMAT(DATE_SUB(_wrk_dt, INTERVAL 5 MINUTE), '%Y%m%d%H%i%s'),_evnt_id,'2') 
Connection ID (thread ID): 10322207 
Status: NOT_KILLED 
에러 발생 원인 query
38 
- Internal Use Only - 
Slow log 활용법 
Slow log example 
# Time: 131016 16:20:23 
# User@Host: root[root] @ [10.50.0.12] 
# Thread_id: 9534 Schema: polariscloud Last_errno: 0 Killed: 0 
# Query_time: 3.734015 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 
# Bytes_sent: 86 
SET timestamp=1381908023; 
SELECT GET_LOCK('10100000000165', 600); 
# User@Host: root[root] @ [10.50.0.11] 
# Thread_id: 8836 Schema: polariscloud Last_errno: 0 Killed: 0 
# Query_time: 42.867847 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 
# Bytes_sent: 86 
SET timestamp=1381908023; 
SELECT GET_LOCK('10100000000165', 600); 
# User@Host: root[root] @ [10.50.0.12] 
# Thread_id: 9482 Schema: polariscloud Last_errno: 0 Killed: 0 
# Query_time: 17.643485 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 
# Bytes_sent: 86 
SET timestamp=1381908023; 
SELECT GET_LOCK('10100000000165', 600); 
# User@Host: root[root] @ [10.50.0.11] 
# Thread_id: 8834 Schema: polariscloud Last_errno: 0 Killed: 0 
# Query_time: 62.542274 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 
# Bytes_sent: 86 
SET timestamp=1381908023; 
SELECT GET_LOCK('10100000000165', 600); 
Query execution time 
lock time for query execution 
Detail execution query
39 
- Internal Use Only - 
Core file 소개 
core file 
•MySQL군 데이터베이스에서 공통적으로 사용 가능 
•Application level에서 OS를 통해 기록 
•메모리에 적재되어 처리되던 내용을 기록 
•일부 시스템에서는 설정이 필요 core file은 데이터베이스가 비정상 종료 시 남는 dying message 
Memory 
Failover flow
40 
- Internal Use Only - 
Core file 설정 방법 
설정 순서 Core file 을 작성하기 위해서 OS와 DB의 옵션설정이 필요 
1. OS core file size 설정 
2. OS 커널 파라메터 설정 
3. MySQL core-file 옵션 설정 및 core-file-size 옵션 설정 
4. MySQL 재 기동
41 
- Internal Use Only - 
Core file 설정 방법 
1. OS core file size 설정 
OS의 core file size 확인 
core file size 가 설정이 안되어 있다면 
특정 사이즈 또는 unlimited 로 설정 
현재 core file size 가 0 
OS core file size 옵션값 확인 prompt> ulimit -a
42 
- Internal Use Only - 
Core file 설정 방법 
1. OS core file size 설정 
OS core file size 옵션 설정 prompt> ulimit -c 2000000 또는 prompt > ulimit –c unlimit 
prompt> sudo /sbin/sysctl -w kernel.core_pattern="core“ 
prompt> sudo /sbin/sysctl -w fs.suid_dumpable=1 
2. OS 커널 파라메터 설정 
설정값 확인
43 
- Internal Use Only - 
Core file 설정 방법 
3. MySQL core-file 옵션 설정 및 core-file-size 옵션 설정 
MySQL cnf 파일에서 옵션 설정 
core-file 옵션 설정 
core-file-size 옵션 설정 
4. 설정이 완료되었으면 MySQL 을 재 시작
44 
- Internal Use Only - 
3 
2 
1 
Core file 장애상황 테스트 
core-file dump 작성을 위한 MySQL 장애상황 테스트 
강제적 장애상황 유발 
MySQL error log 확인 
core-file 확인
45 
- Internal Use Only - 
Core file 장애상황 테스트 
MySQL error log file 살펴보기 
Error signal 
core-file 작성 
MySQL 재 시작 MySQL error log file 에 core-file 작성 기록이 남아있음
46 
- Internal Use Only - 
MySQL Upgrade mysql_upgrade는 mysql 에서 기본제공되는 유틸리티 
1.mysqld daemon start 
2.update 
3.check database 
4.mysqld restart 
upgrade 순서 
prompt> mysql_upgrade --help
47 
- Internal Use Only - 
MySQL Upgrade 
2. upgrade 
prompt> mysql_upgrade -u user -p password --datadir=/user data directory...
48 
- Internal Use Only - 
MySQL Upgrade 
3. Check database 
prompt> mysql_check --check-upgrade --all-database --auto-repair
Certified Partner by 
#첨부 gdb 를 이용한 dump 파일 분석
50 
- Internal Use Only - 
gdb 를 이용한 dump 파일 분석 
gdb를 이용하여 core-file 을 분석 
gdb 에 실행파일과 core-file 을 입력
51 
- Internal Use Only - 
gdb 를 이용한 dump 파일 분석 
gdb를 이용하여 core-file 을 분석 
bt 명령어를 이용하여 crash 가 발생된 지점으로 이동 
signal 발생 확인
52 
- Internal Use Only - 
gdb 를 이용한 dump 파일 분석 
gdb를 이용하여 core-file 을 분석 
backtrace full 명령어를 이용하여 
crash 가 발생된 지점을 한번에 확인할 수 있다
53 
- Internal Use Only - 
첨부 
테스트 결과 
테스트 결과를 보시면 OS 및 MySQL 에서 설정한 core file size 가 정상적으로 적용이 안됨 
OS 및 MySQL core file size 를 변경해 가며 테스트 해 보았으나 역시나 적용이 안됨 
innodb_buffer_pool_size 1G 지정 후 코어파일 작성 테스트 결과 코어파일 사이즈 2.4G 
innodb_buffer_pool_size 8G 지정 후 코어파일 작성 테스트 결과 코어파일 사이즈 10G 
결과적으로 core file size 옵션값들의 제한이 현재로써는 무의미 
MySQL이 사용하는 메모리 량에 따라서 사이즈가 결정 
core file 을 작성을 위해선 서버의 물리적인 메모리 만큼의 여유 DISK 공간이 필요
54 
- Internal Use Only - 
OPEN 
SHARE 
CONTRIBUTE 
ADOPT 
REUSE

More Related Content

What's hot

[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web ServerJi-Woong Choi
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교sprdd
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치Young D
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안Ji-Woong Choi
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration GuideJi-Woong Choi
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure rockplace
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략KTH
 
[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개Open Source Consulting
 
JBoss EWS(Tomcat7) vs Jboss eap6
JBoss EWS(Tomcat7) vs Jboss eap6JBoss EWS(Tomcat7) vs Jboss eap6
JBoss EWS(Tomcat7) vs Jboss eap6양 희선
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-Woong Choi
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)Ji-Woong Choi
 
[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session ClusteringJi-Woong Choi
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211Ji-Woong Choi
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)Osc Osc
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기GunHee Lee
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance TuningJi-Woong Choi
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody중선 곽
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축I Goo Lee
 

What's hot (20)

[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
 
오픈소스 모니터링비교
오픈소스 모니터링비교오픈소스 모니터링비교
오픈소스 모니터링비교
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치
 
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
[오픈소스컨설팅]클라우드자동화 및 운영효율화방안
 
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide[오픈소스컨설팅]Zabbix Installation and Configuration Guide
[오픈소스컨설팅]Zabbix Installation and Configuration Guide
 
JBoss EAP on Azure
JBoss EAP on Azure JBoss EAP on Azure
JBoss EAP on Azure
 
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
H3 2011 대형사이트 구축을 위한 MySQL 튜닝전략
 
[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개[오픈소스컨설팅]스카우터엑스 소개
[오픈소스컨설팅]스카우터엑스 소개
 
JBoss EWS(Tomcat7) vs Jboss eap6
JBoss EWS(Tomcat7) vs Jboss eap6JBoss EWS(Tomcat7) vs Jboss eap6
JBoss EWS(Tomcat7) vs Jboss eap6
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
[오픈소스컨설팅]Scouter 설치 및 사용가이드(JBoss)
 
[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering[오픈소스컨설팅]Session Clustering
[오픈소스컨설팅]Session Clustering
 
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
[오픈소스컨설팅]애플리케이션 빌드 및_배포가이드_v1.0_20140211
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
[오픈소스컨설팅] Atlassian webinar 기본 트러블슈팅(1 of 2)
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
 
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelodyTomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
 
텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축텔레그램을 이용한 양방향 모니터링 시스템 구축
텔레그램을 이용한 양방향 모니터링 시스템 구축
 

Viewers also liked

[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, ClusterJi-Woong Choi
 
[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템Ji-Woong Choi
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning Ji-Woong Choi
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB OptimizationJongJin Lee
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝Mungyu Choi
 
Ssd 성능시험 cubrid mysql
Ssd 성능시험 cubrid mysqlSsd 성능시험 cubrid mysql
Ssd 성능시험 cubrid mysqlswkim79
 
암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초Hoyoung Jung
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWSJi-Woong Choi
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena DollyJi-Woong Choi
 
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1Ji-Woong Choi
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정Ji-Woong Choi
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여Ji-Woong Choi
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)Ji-Woong Choi
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 

Viewers also liked (20)

[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
[오픈소스컨설팅]Day #2 MySQL Tuning, Replication, Cluster
 
[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템[오픈소스컨설팅]오픈소스메일시스템
[오픈소스컨설팅]오픈소스메일시스템
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning 클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
클라우드 컴퓨팅 기반 기술과 오픈스택(Kvm) 기반 Provisioning
 
MariaDB Optimization
MariaDB OptimizationMariaDB Optimization
MariaDB Optimization
 
MySQL 기초
MySQL 기초MySQL 기초
MySQL 기초
 
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
조대협의 서버 사이드 - 대용량 아키텍처와 성능튜닝
 
Ssd 성능시험 cubrid mysql
Ssd 성능시험 cubrid mysqlSsd 성능시험 cubrid mysql
Ssd 성능시험 cubrid mysql
 
암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초
 
[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기[오픈소스컨설팅 뉴스레터] 2016년 1분기
[오픈소스컨설팅 뉴스레터] 2016년 1분기
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS[오픈소스컨설팅]파일럿진행예제 on AWS
[오픈소스컨설팅]파일럿진행예제 on AWS
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
[오픈소스컨설팅] Open stack kilo with DVR_CEPH_v1.1
 
[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정[오픈소스컨설팅]소프트웨어 개발 준비 과정
[오픈소스컨설팅]소프트웨어 개발 준비 과정
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여
 
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
[오픈소스컨설팅]Docker on Cloud(Digital Ocean)
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 

Similar to [오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting

MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)OracleMySQL
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124한 경만
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxNeoClova
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQLrockplace
 
MariaDB
MariaDBMariaDB
MariaDBymtech
 
Maria db
Maria dbMaria db
Maria dbymtech
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Sung wook Kang
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2xyzlee
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6HyeonSeok Choi
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other FeaturesJongJin Lee
 
MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개rockplace
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차seung-hyun Park
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육 Sangmo Kim
 
Giip bp-giip connectivity1703
Giip bp-giip connectivity1703Giip bp-giip connectivity1703
Giip bp-giip connectivity1703Lowy Shin
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQLI Goo Lee
 
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2Seok-joon Yun
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)중선 곽
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis BasicJi-Woong Choi
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQLrockplace
 

Similar to [오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting (20)

MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)MySQL Performance Tuning (In Korean)
MySQL Performance Tuning (In Korean)
 
Database 튜닝 교육 110124
Database 튜닝 교육 110124Database 튜닝 교육 110124
Database 튜닝 교육 110124
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
 
MariaDB
MariaDBMariaDB
MariaDB
 
Maria db
Maria dbMaria db
Maria db
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석
 
Fast Track To Sybase Iq2
Fast Track To Sybase Iq2Fast Track To Sybase Iq2
Fast Track To Sybase Iq2
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
MariaDB Other Features
MariaDB Other FeaturesMariaDB Other Features
MariaDB Other Features
 
MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
 
Giip bp-giip connectivity1703
Giip bp-giip connectivity1703Giip bp-giip connectivity1703
Giip bp-giip connectivity1703
 
From MSSQL to MySQL
From MSSQL to MySQLFrom MSSQL to MySQL
From MSSQL to MySQL
 
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
[2015-06-19] Oracle 성능 최적화 및 품질 고도화 2
 
Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)Db 진단 및 튜닝 보고 (example)
Db 진단 및 튜닝 보고 (example)
 
[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic[오픈소스컨설팅]MyBatis Basic
[오픈소스컨설팅]MyBatis Basic
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQL
 

More from Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기Ji-Woong Choi
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육Ji-Woong Choi
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략Ji-Woong Choi
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기Ji-Woong Choi
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12Ji-Woong Choi
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항Ji-Woong Choi
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기Ji-Woong Choi
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-RegionJi-Woong Choi
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocationJi-Woong Choi
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep DiveJi-Woong Choi
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0Ji-Woong Choi
 

More from Ji-Woong Choi (17)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
OpenStack 인스턴스 간략 사용자_매뉴얼(liberty)_v1
 
[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive[오픈소스컨설팅]Atlassian JIRA Deep Dive
[오픈소스컨설팅]Atlassian JIRA Deep Dive
 
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
[오픈소스컨설팅]RHEL7/CentOS7 Pacemaker기반-HA시스템구성-v1.0
 

[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting

  • 1. Day #3 MySQL monitoring, troubleshooting Certified Partner by
  • 2. 2 - Internal Use Only - 목차 MySQL monitoring tool 소개 및 필요성 모니터링의 기능 MysqlReport MySQL workbench MySQL troubleshooting explain 사용법 query profiling 활용법 error Log 및 slow query 활용법 core file dump 작성 및 활용법 MySQL upgrade
  • 3. MySQL Monitoring tool Certified Partner by
  • 4. 4 - Internal Use Only - 데이터베이스 모니터링 소개 및 필요성 데이터베이스 모니터링이란? 왜 데이터베이스 모니터링이 요구되어지는가? •특정대상(서비스, 정책, 물리적 장치 등)에 대해 감시, 형태분석, 시정활동을 하는 행위 •리포팅 모니터를 바라보고 있는 행위 •시스템 진단, 문제해결 •물리적 장비, 특정 서비스 리포팅 •오류감지 •문제에 대한 경고
  • 5. 5 - Internal Use Only - 데이터베이스 모니터링 기능 모니터링의 기능 모니터링을 이용해 시스템의 상태를 캡처하여 통계를 작성/ 분석할 수 있으며 오류를 감지하거나 담당자에게 통보할 수 있음 시스템 상태 캡처 통계 •문제해결, 진단에 유용 •그래프 / 차트를 이용하기에 매우 편리함 •놓치고 넘어갈 수 있는 부분들에 대한 리포트 오류감지 •시스템 상태 모니터 •문제에 대한 경고
  • 6. 6 - Internal Use Only - 데이터베이스 모니터링 툴의 종류 상용 제품 오픈소스 제품군 데이터베이스 모니터링 툴제품군 오픈소스 툴들은 100% 무료이며 수 많은 플러그인 기능 및 충분한 기능을 제공
  • 7. 7 - Internal Use Only - 데이터베이스 모니터링 툴 제품군 비교 Mysql Enterprise Monitor Nagios Cacti Zabbix 라이선스 구분 licence subscribtion free free licence free 기술지원업체 mysql nagios 자체 자체 zabbix 지원 제품 Mysql Enterprise Monitoring Nagios XI Cacti 준비 중 추가 구성 제품 - - Many plug-ins Many plug-ins 준비 중 장비소요 1대 1대 1대 준비 중 특징 깔끔한 UI 다른 툴에서는 제공하지 않는 Adviser, query analyzer 제공 user custom 가능 무료 Eazy Install / Control / use 준비 중 오픈소스 데이터베이스 클러스터 제품군 비교표.
  • 8. 8 - Internal Use Only - MySQL Enterprise Monitor MySQL 네트워크 모니터링 및 어드바이저 서비스는 여러분의 MySQL 서버를 지속적으로 모니터 하여 잠재적인 문제가 시스템에 영향을 주기 전에 여러분에게 경고를 해 줍니다 특징 MySQL 서버의 상태를 자세히 보여 줌 여러 대의 MySQL 서버를 마치 하나의 그룹처럼 관리함 MySQL을 설치한 개발자의 어드바이저 룰을 65까지 구동가능 문제 영역을 구분해 줌으로써 보다 빨리 문제를 해결 전문가의 지원으로 MySQL의 보안, 성능 리플리케이션 문제 빠르게 개선 자체 개발 스크립트를 작성, 디버깅, 그리고 관리시간 감소효과 특정 MySQL 환경에 맞게 커스텀 룰을 구축 정기적으로 새로운 룰을 받으실 수가 있습니다.
  • 9. 9 - Internal Use Only - MySQL Enterprise Monitor architecture Database server Monitor agent 수집 결과 MySQL Monitor Database server Monitor agent 수집 결과 Database server Monitor agent 수집 결과 수집 결과 수집 결과 수집 결과
  • 10. 10 - Internal Use Only - MySQL Enterprise Monitor 장점 및 단점 장점 MySQL Adviser 제공 MySQL query analyzer 제공 단점 Monitoring 제품만 따로 구입 불가 Galera Cluster 미지원
  • 11. 11 - Internal Use Only - Cacti 소개 오픈 소스에 대한 프런트 엔드 응용 프로그램으로 디자인 된 오픈 소스, 웹 기반 네트워크 모니터링 및 그래프 도구입니다 특징 무제한 그래프 항목 자동 패딩 지원 그래프 그래프 데이터 조작 유연한 데이터 소스 데이터 표준이 아닌 시간 범위에서 수집 사용자 정의 데이터 수집 스크립트 SNMP 지원 내장 그래프 템플릿 데이터 소스 템플릿 호스트 템플릿 그래프 데이터의 트리, 목록 및 미리보기 사용자 기반 관리 및 보안
  • 12. 12 - Internal Use Only - Cacti 소개 사용자 임의로 구성 가능한 View 목록과 그래프 구성
  • 13. 13 - Internal Use Only - Cacti 다양한 항목의 그래프
  • 14. 14 - Internal Use Only - Cacti 다양한 플러그인 템플릿
  • 15. 15 - Internal Use Only - 모니터링 서버 snmp Cacti 활용 원격지의 서버들도 한 곳에서 관리/모니터링 가능
  • 16. 16 - Internal Use Only - Nagios 시스템 및 네트워크 모니터링 프로그램, 지정한 호스트와 서비스를 관찰하고 장애 발생/복구되었을 때 경보를 발령. 특징 네트워크 서비스 모니터링(SMTP, POP3, HTTP, NNTP, PING, 등) 호스트 자원 모니터링(프로세서 부하, 디스크 사용량, 등) 자신들의 서비스 체크할 플러그인을 쉽게 개발할 수 있도록한 간단한 플러그인 디자인 병렬화된 서비스 체크 다운된 호스트와 통신되지 않는 호스트의 탐지와 구분을 가능하게 하는 트리구조의 네트워크 호스트 구조정의 기능 서비스 또는 호스트의 문제가 발생하거나 해결되었을 때 통보(이메일, SMS, 사용자정의 방법) 서비스 또는 호스트 이벤트의 사전 문제 해결시 실행될 이벤트 핸들러 정의기능 자동 로그 파일 순환 모니터링 호스트 이중화 지원 현재 네트워크 상태, 통보와 문제발생 이력, 로그파일등을 보기 위한 선택적 웹 인터페이스
  • 17. 17 - Internal Use Only - Nagios 다양한 항목의 그래프
  • 18. 18 - Internal Use Only - MySQLReport mysqlreport는 MySQL 서버의 STATUS 값들을 관리자가 보기 편한 형식으로 리포팅 해주는 perl 스크립트 1.download 2.install perl DBI/DBD::mysql wget "http://hackmysql.com/scripts/mysqlreport" prompt> perl -MDBI -e 'print "$DBI::VERSIONn"' prompt> perl -e "use DBI" 아래의 명령어를 이용하여 설치 확인 : 결과 : cpan> install DBI prompt> sudo cpan install DBI 설치 명령어 :
  • 19. 19 - Internal Use Only - MySQLReport 2.install perl DBD::mysql prompt> perl -MDBD::mysql -e'print "$DBD::mysql::VERSIONn"' prompt> perl -e "use DBD::mysql" 아래의 명령어를 이용하여 설치 확인 : 결과 : cpan> install DBD::mysql prompt> sudo cpan install DBD::mysql 설치 명령어 : mysql_config 를 찾지못한다고 오류가나면 $PATH를 추가하고 다시 한다. DB 테스트하는 과정에서 오류가 난다면 •$HOME/.cpan/ 디렉토리의 설치문서를 본다. •$ vi /root/.cpan/build/DBD-mysql-4.008/INSTALL.html
  • 20. 20 - Internal Use Only - MySQLReport mysqlreport는 MySQL 서버의 STATUS 값들을 관리자가 보기 편한 형식으로 리포팅 해주는 perl 스크립트 __ Key _______________________________________________ Buffer used 54.59M of 384.00M %Used: 14.22 Current 95.05M %Usage: 24.75 Write ratio 0.723 Read ratio 0.000 __ Questions _________________________________________ Total 407.16M 94.8/s Com_ 386.15M 89.9/s %Total: 94.84 DMS 37.63M 8.8/s 9.24 -Unknown 37.61M 8.8/s 9.24 COM_QUIT 21.00M 4.9/s 5.16 QC Hits 107 0.0/s 0.00 Slow 6.89k 0.0/s 0.00 %DMS: 0.02 DMS 37.63M 8.8/s 9.24 SELECT 36.57M 8.5/s 8.98 97.18 INSERT 1.06M 0.2/s 0.26 2.81 UPDATE 3.50k 0.0/s 0.00 0.01 DELETE 27 0.0/s 0.00 0.00 REPLACE 0 0/s 0.00 0.00 Com_ 386.15M 89.9/s 94.84 stmt_prepar 171.28M 39.9/s 42.07 stmt_close 171.27M 39.9/s 42.06 stmt_execut 37.61M 8.8/s 9.24 __ SELECT and Sort _____________________________________ Scan 28.49M 6.6/s %SELECT: 77.90 Range 9 0.0/s 0.00 Full join 0 0/s 0.00 Range check 0 0/s 0.00 Full rng join 0 0/s 0.00 Sort scan 17 0.0/s Sort range 0 0/s Sort mrg pass 10 0.0/s __ Query Cache _________________________________________ Memory usage 8.58k of 32.00M %Used: 0.03 Block Fragmnt 100.00% Hits 107 0.0/s Inserts 5.62k 0.0/s Insrt:Prune 5.62k:1 0.0/s Hit:Insert 0.02:1 __ Table Locks _________________________________________ Waited 20.69k 0.0/s %Total: 0.01 Immediate 175.76M 40.9/s __ Tables _____________________________________________ Open 171 of 512 %Cache: 33.40 Opened 654 0.0/s
  • 21. 21 - Internal Use Only - MySQL WorkBench MySQL의 워크 벤치는 데이터베이스 설계자, 개발자, DBA를위한 통합 비주얼 도구입니다. MySQL의 워크 벤치는 데이터 모델링, SQL 개발 및 서버 구성, 사용자 관리, 백업 및 훨씬 더 포괄적 인 관리 도구를 제공합니다. MySQL의 워크 벤치 윈도우, 리눅스 및 Mac OS X에서 사용할 수 있습니다
  • 22. 22 - Internal Use Only - MySQL WorkBench
  • 23. 23 - Internal Use Only - MySQL WorkBench
  • 25. Query Profiling 활용법 Certified Partner by
  • 26. 26 - Internal Use Only - Query Profiling MySQL 5.1 버전 이후 내장 기능 현재 세션 과정 동안 실행 문에 대한 리소스 사용을 나타냄 프로파일링 과정 > set profiling=1; 프로파일링을 설정해준다. > Select * from store; > Show profiles; 분석할 쿼리 분석 시작 Query ID
  • 27. 27 - Internal Use Only - Query Profiling > show profile for query 1 쿼리별 상세내역 프로파일링 과정 Query ID 해당 쿼리의 실행 내역
  • 29. 29 - Internal Use Only - Explain 활용법 MySQL이 SELECT 명령문을 실행하는 방법에 대한 정보를 얻기 위한 수단 MySQL은 쿼리 실행 플랜(query execution plan) 정보를 옵티마이저 (optimizer)에서 가져 와서 출력 한다. 즉, MySQL은 테이블들이 어떤 순서로 조인(join)하는지에 대한 정보를 포함해서, SELECT를 처리하는 방법에 대해서 알려 준다. > Explain select * from store  id •SELECT 번호, 쿼리내의 SELECT 의 구분번호  Select type •SIMPLE: 단순 SELECT (UNION 이나 서브쿼리를 사용하지 않음) •PRIMARY: 가장 외곽의 SELECT •UNION: UNION 에서의 두번째 혹은 나중에 따라오는 SELECT •DEPENDENT UNION: UNION 에서의 두번째 혹은 나중에 따라오는 SELECT, 외곽쿼리에 의존적 •UNION RESULT: UNION 의 결과물 •SUBQUERY: 서브쿼리의 첫번째 SELECT •DEPENDENT SUBQUERY: 서브쿼리의 첫번째 SELECT, 외곽쿼리에 의존적 •DERIVED: SELECT 로 추출된 테이블 (FROM 절 내부의 서브쿼리)
  • 30. 30 - Internal Use Only - Explain 활용법 > Explain select * from store  type System •테이블에 단 하나의 행만 존재(시스템 테이블). const join 의 특수한 경우 const •많아야 하나의 매치되는 행만 존재할 때 •PRIMARY KEY 나 UNIQUE index 를 상수와 비교할 때 •각 컬럼값은 나머지 연산에서 상수로 간주, 처음 한번만 읽어들이면 되므로 매우 빠름 eq_ref •조인수행을 위해 각 테이블에서 하나씩의 행만이 읽히는 경우 •조인연산에 PRIMARY KEY 나 UNIQUE index 인덱스가 사용되는 경우 •인덱스된 컬럼이 = 연산에 사용되는 경우 ref •이 전 테이블과의 조인에 사용될 매치되는 인덱스의 모든행이 이 테이블에서 읽혀질 때 •leftmost prefix 키만을 사용하거나 사용된 키가 PRIMARY KEY 나 UNIQUE 가 아닐때 •(즉 키값으로 단일행을 추출할수 없을때) •사용된 키가 적은수의 행과 매치되면 이것은 적절한 조인 타입 •ref 는 인덱스된 컬럼과 = 연산에서 사용됨 ref_or_null •ref 와 같지만 NULL 값을 포함하는 행에대한 검색이 수반될 때 •서브쿼리 처리에서 대개 사용됨 •index_merge •인 덱스 병합 최적화가 적용되는 조인 타입 •이 경우, key 컬럼은 사용된 인덱스의 리스트를 나타내며 •key_len 컬럼은 사용된 인덱스중 가장 긴 key 명을 나타냄
  • 31. 31 - Internal Use Only - Explain 활용법 > Explain select * from store index_merge •인 덱스 병합 최적화가 적용되는 조인 타입 •이 경우, key 컬럼은 사용된 인덱스의 리스트를 나타내며 •key_len 컬럼은 사용된 인덱스중 가장 긴 key 명을 나타냄 unique_subquery •몇몇 IN 서브쿼리 처리에서 ref 타입대신 사용됨 •unique_subquery 는 성능향상을 위해 서브쿼리를 단순 index 검색 함수로 대체함 index_subquery •unique_subquery 와 마찬가지로 IN 서브쿼리를 대체 •단, 서브쿼리에서 non-unique 인덱스가 사용될때 동작 함 range •인 덱스를 사용하여 주어진 범위 내의 행들만 추출 •key 컬럼: 사용된 인덱스 •key_len: 사용된 가장 긴 key 부분 •ref 컬럼: 이 타입의 조인에서 NULL •키 컬럼이 상수와 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN 또는 IN 연산에 사용될때 적용됨 index •인덱스가 스캔된다는걸 제외하면 ALL 과 같음 •일반적으로 인덱스 파일이 데이타파일보다 작기 때문에 ALL 보다는 빠름 •MySQL 은 쿼리에서 단일 인덱스의 일부분인 컬럼을 사용할때 이 조인타입을 적용함 ALL •이전 테이블과의 조인을 위해 풀스캔 •(조인에 쓰인) 첫번째 테이블이 고정이 아니라면 비효율적 •대부분의 경우에 아주 느린 성능
  • 32. 32 - Internal Use Only - Explain 활용법 > Explain select * from store  possible_keys •MySQL 이 해당 테이블의 검색에 사용할수 있는 인덱스들 •possible_keys 에 나타난 인덱스들이 결과에 나타난 테이블 순서에서 실제 사용할 수 없을수도 있음 > Explain select * from store  key •MySQL 이 실제 사용한 key(index)
  • 33. 33 - Internal Use Only - Explain 활용법 > Explain select * from store  key_len •MySQL 이 사용한 인덱스의 길이, key 컬럼값이 NULL 이면 이값도 NULL •key_len 값으로 MySQL 이 실제 복수컬럼 키중 얼마나 많은 부분을 사용할 것인지 알 수 있음 > Explain select * from store  ref •행을 추출하는데 키와 함께 사용된 컬럼이나 상수값
  • 34. 34 - Internal Use Only - Explain 활용법 > Explain select * from store  rows •쿼리 수행에서 MySQL 이 예상하는 검색해야 할 행수 > Explain select * from store  extra •MySQL 이 쿼리를 해석한 추가적인 정보를 나타냄 Distinct : MySQL 이 매치되는 첫행을 찾는 즉시 검색을 중단한다는 의미 Not exists : MySQL 이 LEFT JOIN 을 수행함에 매치되는 한 행을 찾으면 더이상 매치되는 행을 검색x range checked for each record (index map: #) : MySQL 이 사용할 좋은 인덱스가 없음 의미 Using filesort : MySQL 이 정렬을 위해 추가적인 과정을 필요로 함 Using index : 컬럼정보가 실제 테이블이 아닌 인덱스트리에서 추출, 쿼리에서 단일 인덱스된 컬럼들만을 사용하는 경우 Using temporary : MySQL 이 결과의 재사용을 위해 임시테이블을 사용, 쿼리 내에 GROUP BY 와 ORDER BY 절이 각기 다른 컬럼을 사용할 때 발생 Using where : WHERE 절이 다음 조인에 사용될 행이나 클라이언트에게 돌려질 행을 제한하는 경우 테이블의 모든 행을 검사할 의도가 아니면 ALL 이나 index 라면 쿼리사용이 잘못된 것임 Using sort_union(…) , Using union(…) , Using intersect(…) Using index for group-by : Using index 와 접근방식이 같으며, 추가적인 디스크 접근 없이 GROUP BY 나 DICTINCT 쿼리에 사용된 모든 컬럼에 대한 인덱스를 찾았음을 의미
  • 35. Error log 및 slow query 활용법 Certified Partner by
  • 36. 36 - Internal Use Only - Error log 활용법 2013-09-11 03:07:51 51331 [Warning] 'user' entry 'root@eusamsdb01' ignored in --skip-name-resolve mode. 2013-09-11 03:07:51 51331 [Warning] 'proxies_priv' entry '@ root@eusamsdb01' ignored in --skip-name-resolve mode. 2013-09-11 03:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 03:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 04:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 04:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 05:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 05:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 2013-09-11 06:11:02 51331 [ERROR] Event Scheduler: [scop_m@10.8.20.103][scop_fm.EFM_ICDT_EVNT_STAT_EVNT] Lock wait timeout exceeded; try restarting transaction 2013-09-11 06:11:02 51331 [Note] Event Scheduler: [scop_m@10.8.20.103].[scop_fm.EFM_ICDT_EVNT_STAT_EVNT] event execution failed. 07:09:52 UTC - mysqld got signal 11 ; This could be because you hit a bug. It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware. We will try our best to scrape up some info that will hopefully help diagnose the problem, but since we have already crashed, something is definitely wrong and this may fail. key_buffer_size=16777216 read_buffer_size=8388608 max_used_connections=234 max_threads=500 thread_count=189 connection_count=183 It is possible that mysqld could use up to key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 6167145 K bytes of memory Hope that's ok; if not, decrease some variables in the equation. Thread pointer: 0xcf984700 Attempting backtrace. You can use the following information to find out where mysqld died. If you see no messages after this, something went terribly wrong... Error log example Error 상황일 때 시스템 정보
  • 37. 37 - Internal Use Only - Error log 활용법 stack_bottom = 2b45c45f8def thread_stack 0x40000 /app/mysql/bin/mysqld(my_print_stacktrace+0x35)[0x925a65] /app/mysql/bin/mysqld(handle_fatal_signal+0x3e8)[0x69b1b8] /lib64/libpthread.so.0[0x3db560f500] /app/mysql/bin/mysqld(_ZNK12Field_string4typeEv+0x19)[0x809679] /app/mysql/bin/mysqld(_Z10field_convP5FieldS0_+0x74)[0x810894] /app/mysql/bin/mysqld(_ZN10Item_field13save_in_fieldEP5Fieldb+0x44)[0x5c7464] /app/mysql/bin/mysqld(_Z12sp_eval_exprP3THDP5FieldPP4Item+0x88)[0x69baf8] /app/mysql/bin/mysqld(_ZN11sp_rcontext12set_variableEP3THDP5FieldPP4Item+0x1a)[0x6a60ca] /app/mysql/bin/mysqld(_ZN9sp_cursor24Select_fetch_into_spvars9send_dataER4ListI4ItemE+0x60)[0x6a6150] /app/mysql/bin/mysqld(_ZN19Materialized_cursor5fetchEm+0x4d)[0x6e8fbd] /app/mysql/bin/mysqld(_ZN9sp_cursor5fetchEP3THDP4ListI11sp_variableE+0xd0)[0x6a6b70] /app/mysql/bin/mysqld(_ZN15sp_instr_cfetch7executeEP3THDPj+0x34)[0x85c184] /app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] /app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] /app/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x44b5)[0x71a045] /app/mysql/bin/mysqld(_ZN13sp_instr_stmt9exec_coreEP3THDPj+0x60)[0x85c2c0] /app/mysql/bin/mysqld(_ZN12sp_lex_instr23reset_lex_and_exec_coreEP3THDPjb+0x234)[0x85c874] /app/mysql/bin/mysqld(_ZN12sp_lex_instr29validate_lex_and_execute_coreEP3THDPjb+0x99)[0x85e0c9] /app/mysql/bin/mysqld(_ZN13sp_instr_stmt7executeEP3THDPj+0x182)[0x85e3f2] /app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] /app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] /app/mysql/bin/mysqld(_Z21mysql_execute_commandP3THD+0x44b5)[0x71a045] /app/mysql/bin/mysqld(_ZN13sp_instr_stmt9exec_coreEP3THDPj+0x60)[0x85c2c0] /app/mysql/bin/mysqld(_ZN12sp_lex_instr23reset_lex_and_exec_coreEP3THDPjb+0x234)[0x85c874] /app/mysql/bin/mysqld(_ZN12sp_lex_instr29validate_lex_and_execute_coreEP3THDPjb+0x99)[0x85e0c9] /app/mysql/bin/mysqld(_ZN13sp_instr_stmt7executeEP3THDPj+0x182)[0x85e3f2] /app/mysql/bin/mysqld(_ZN7sp_head7executeEP3THDb+0x4bd)[0x6a0f4d] /app/mysql/bin/mysqld(_ZN7sp_head17execute_procedureEP3THDP4ListI4ItemE+0x683)[0x6a1a93] /app/mysql/bin/mysqld(_ZN14Event_job_data7executeEP3THDb+0x5cc)[0x7c254c] /app/mysql/bin/mysqld(_ZN19Event_worker_thread3runEP3THDP28Event_queue_element_for_exec+0xe1)[0x8ac111] /app/mysql/bin/mysqld(event_worker_thread+0x54)[0x8ac1d4] /app/mysql/bin/mysqld(pfs_spawn_thread+0x13b)[0xae995b] /lib64/libpthread.so.0[0x3db5607851] /lib64/libc.so.6(clone+0x6d)[0x3db52e767d] Trying to get some variables. Some pointers may be invalid and cause the dump to abort. Query (d15f6010): CALL scop_pm.PPM_HDLR_05_DATA(DATE_FORMAT(DATE_SUB(_wrk_dt, INTERVAL 5 MINUTE), '%Y%m%d%H%i%s'),_evnt_id,'2') Connection ID (thread ID): 10322207 Status: NOT_KILLED 에러 발생 원인 query
  • 38. 38 - Internal Use Only - Slow log 활용법 Slow log example # Time: 131016 16:20:23 # User@Host: root[root] @ [10.50.0.12] # Thread_id: 9534 Schema: polariscloud Last_errno: 0 Killed: 0 # Query_time: 3.734015 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 # Bytes_sent: 86 SET timestamp=1381908023; SELECT GET_LOCK('10100000000165', 600); # User@Host: root[root] @ [10.50.0.11] # Thread_id: 8836 Schema: polariscloud Last_errno: 0 Killed: 0 # Query_time: 42.867847 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 # Bytes_sent: 86 SET timestamp=1381908023; SELECT GET_LOCK('10100000000165', 600); # User@Host: root[root] @ [10.50.0.12] # Thread_id: 9482 Schema: polariscloud Last_errno: 0 Killed: 0 # Query_time: 17.643485 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 # Bytes_sent: 86 SET timestamp=1381908023; SELECT GET_LOCK('10100000000165', 600); # User@Host: root[root] @ [10.50.0.11] # Thread_id: 8834 Schema: polariscloud Last_errno: 0 Killed: 0 # Query_time: 62.542274 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 Rows_affected: 0 Rows_read: 0 # Bytes_sent: 86 SET timestamp=1381908023; SELECT GET_LOCK('10100000000165', 600); Query execution time lock time for query execution Detail execution query
  • 39. 39 - Internal Use Only - Core file 소개 core file •MySQL군 데이터베이스에서 공통적으로 사용 가능 •Application level에서 OS를 통해 기록 •메모리에 적재되어 처리되던 내용을 기록 •일부 시스템에서는 설정이 필요 core file은 데이터베이스가 비정상 종료 시 남는 dying message Memory Failover flow
  • 40. 40 - Internal Use Only - Core file 설정 방법 설정 순서 Core file 을 작성하기 위해서 OS와 DB의 옵션설정이 필요 1. OS core file size 설정 2. OS 커널 파라메터 설정 3. MySQL core-file 옵션 설정 및 core-file-size 옵션 설정 4. MySQL 재 기동
  • 41. 41 - Internal Use Only - Core file 설정 방법 1. OS core file size 설정 OS의 core file size 확인 core file size 가 설정이 안되어 있다면 특정 사이즈 또는 unlimited 로 설정 현재 core file size 가 0 OS core file size 옵션값 확인 prompt> ulimit -a
  • 42. 42 - Internal Use Only - Core file 설정 방법 1. OS core file size 설정 OS core file size 옵션 설정 prompt> ulimit -c 2000000 또는 prompt > ulimit –c unlimit prompt> sudo /sbin/sysctl -w kernel.core_pattern="core“ prompt> sudo /sbin/sysctl -w fs.suid_dumpable=1 2. OS 커널 파라메터 설정 설정값 확인
  • 43. 43 - Internal Use Only - Core file 설정 방법 3. MySQL core-file 옵션 설정 및 core-file-size 옵션 설정 MySQL cnf 파일에서 옵션 설정 core-file 옵션 설정 core-file-size 옵션 설정 4. 설정이 완료되었으면 MySQL 을 재 시작
  • 44. 44 - Internal Use Only - 3 2 1 Core file 장애상황 테스트 core-file dump 작성을 위한 MySQL 장애상황 테스트 강제적 장애상황 유발 MySQL error log 확인 core-file 확인
  • 45. 45 - Internal Use Only - Core file 장애상황 테스트 MySQL error log file 살펴보기 Error signal core-file 작성 MySQL 재 시작 MySQL error log file 에 core-file 작성 기록이 남아있음
  • 46. 46 - Internal Use Only - MySQL Upgrade mysql_upgrade는 mysql 에서 기본제공되는 유틸리티 1.mysqld daemon start 2.update 3.check database 4.mysqld restart upgrade 순서 prompt> mysql_upgrade --help
  • 47. 47 - Internal Use Only - MySQL Upgrade 2. upgrade prompt> mysql_upgrade -u user -p password --datadir=/user data directory...
  • 48. 48 - Internal Use Only - MySQL Upgrade 3. Check database prompt> mysql_check --check-upgrade --all-database --auto-repair
  • 49. Certified Partner by #첨부 gdb 를 이용한 dump 파일 분석
  • 50. 50 - Internal Use Only - gdb 를 이용한 dump 파일 분석 gdb를 이용하여 core-file 을 분석 gdb 에 실행파일과 core-file 을 입력
  • 51. 51 - Internal Use Only - gdb 를 이용한 dump 파일 분석 gdb를 이용하여 core-file 을 분석 bt 명령어를 이용하여 crash 가 발생된 지점으로 이동 signal 발생 확인
  • 52. 52 - Internal Use Only - gdb 를 이용한 dump 파일 분석 gdb를 이용하여 core-file 을 분석 backtrace full 명령어를 이용하여 crash 가 발생된 지점을 한번에 확인할 수 있다
  • 53. 53 - Internal Use Only - 첨부 테스트 결과 테스트 결과를 보시면 OS 및 MySQL 에서 설정한 core file size 가 정상적으로 적용이 안됨 OS 및 MySQL core file size 를 변경해 가며 테스트 해 보았으나 역시나 적용이 안됨 innodb_buffer_pool_size 1G 지정 후 코어파일 작성 테스트 결과 코어파일 사이즈 2.4G innodb_buffer_pool_size 8G 지정 후 코어파일 작성 테스트 결과 코어파일 사이즈 10G 결과적으로 core file size 옵션값들의 제한이 현재로써는 무의미 MySQL이 사용하는 메모리 량에 따라서 사이즈가 결정 core file 을 작성을 위해선 서버의 물리적인 메모리 만큼의 여유 DISK 공간이 필요
  • 54. 54 - Internal Use Only - OPEN SHARE CONTRIBUTE ADOPT REUSE