SlideShare a Scribd company logo
1 of 73
MySQL 교육자료 
주식회사 오픈소스컨설팅
2 
- Internal Use Only - 
회사 소개 
오픈소스 컨설팅은 오픈 소스에 전문적인 컨설팅 기업으로써 Technical 
Architect/Application Architect 컨설팅, 클라우드 관련 솔루션을 제공하고 있으며, 레드햇과 
같은 오픈소스 벤더의 솔루션의 기술지원 사업을 수행합니다. 
오픈소스 컨설팅은 오픈소스 운영체제/웹서버/미들웨어를 전문적으로 지원 
하는 회사입니다. 또한 시스템 인프라, 개발 인프라를 위한 TA/AA에 대한 
컨설팅 서비스를 지원하고 있으며, Athena 제품군을 보유하고 있습니다. 
Solution 
• Athena SQS 
• Athena Provisioning 
• Athena Monitoring 
• Other Solution Frameworks 
Consulting 
• 시스템 아키텍처 컨설팅 
• Amazon AWS 컨설팅 
• Technical/Application Architect 
• Middleware/Linux Dedicated Engineer 
Technical 
Support 
• Red Hat Linux, Virtualization 
• Red Hat JBoss Middleware 
• Apache Web Server, Tomcat 
• MySQL/MariaDB/Percona 
컨설팅 영역 오픈소스 기술지원 
솔루션 영역
Day #1 MySQL introduction 
Certified Partner by
4 
- Internal Use Only - 
목차 
MySQL 소개 
간략한 소개 
version history 
MySQL 사용처 
제품 군 변화 
시장 변화 
MySQL 구성 
MySQL 클라이언트 / 서버 개념 
클라이언트 프로그램 
MySQL 설치 
MySQL 버전 
MySQL 설치 
MySQL 환경 설정 
환경설정, 변수 설정 
MySQL 스토리지 엔진 소개 
MySQL tuning 소개 및 방법 
데이터 백업/복구 방법 
백업 
복구 
MySQL Upgrade
MySQL 소개 
Certified Partner by
6 
- Internal Use Only - 
MySQL 소개 MySQL 은 세계에서 가장 많이 쓰이는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) 
•빠른 성능과 쉬운 사용자 구성 
•다중 스레드, 다중 사용자 형식의 구조 질의어 형식 
•이중 라이선스 ( GPL, 상용 라이선스 ) 
•다수의 API 제공 PHP, Perl, 파이썬, 자바, .NET, MyODBC, Ruby , delphi , MySQL C 커넥터…. 
•플랫폼에 대한 자유 
•크로스 플랫폼 지원 
•수 많은 커뮤니티 인프라 
MySQL에 대한 간략한 소개
7 
- Internal Use Only - 
MySQL version history 
1994년 MySQL의 원 개발 1995년 5월 최초의 국제화판 1998년 1월 8일 www.mysql.com 에서 출시 2004년 10월 4.1 출시 
•R 트리와 B 트리, 서브쿼리, prepared statements 지원 2005년 10월 5.0 제품 출시 
•커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션 지원 2008년 11월 27일 5.1 출시 
•이벤트 스케줄러, 파티셔닝, 플러그인 API, 열 기반의 복제, 서버 로그 테이블 2010년 12월 5.5 성능 향상과 특징 
•기본 스토리지 엔진이 InnoDB이며, 이것은 트랜잭션과 참조 무결성 제한을 지원한다. 
•개선된 InnoDB I/O 서브시스템 
•향상된 SMP 지원 
•Semi synchronous 복제 
•SQL 표준에 대응한 SIGNAL 과 RESIGNAL 구문 
•유니코드 문자 셋 utf16, utf32, utf8mb4 지원 
•사용자 정의 파티셔닝에 대한 새로운 옵션 
이슈로 살펴 본 MySQL history
8 
- Internal Use Only - 
MySQL 사용처
9 
- Internal Use Only - 
MySQL 제품 군 변화 
provider 
오픈 소스 시장에서의 MySQL 제품 군의 변화 
개발지침 등에 대한 의견 차이 
2009년 Monty Program AB사를 설립하고 MariaDB 개발 시작 
provider
10 
- Internal Use Only - 
MariaDB 시장변화 
Oracle에 대한 MySQL 사용자들의 입장변화 
2009년 12월 설문 결과에 따르면, MySQL 사용자들은 Oracle의 MySQL 인수에 대한 입장이 '변화 없음(No Change)'에 60% 이상이었으나, 2013년 초 설문 결과에 따르면 '변화 없음(No Change)'이 45%, '덜 쓰겠다(Less likely to use MySQL)'가 47% 수준으로 과거에 비해 MySQL 사용자들은 Oracle사의 인수에 대해 부정적 견해가 더 많아진 것
11 
- Internal Use Only - 
MariaDB 시장변화 
MySQL 제품 군들의 시장 변화 
MySQL 생태계 내에서 Oracle MySQL의 비중이 점점 줄어들고 있다는 결과이다. 2012년 MySQL, MariaDB, Percona 3개 제품 중 압도적으로 높은 비율(91%)을 보인 MySQL은, MySQL로부터 분기(fork)된 다양한 Eco 제품 군의 선전으로 인해 2013년 점유율이 62%로 감소되었고, 2018년에는 무려 50% 미만으로 예측하고 있다.
MySQL 데이터베이스 구성 
Certified Partner by
13 
- Internal Use Only - 
MySQL 구성 
MySQL 클라이언트 / 서버 개념 
mysqld 
데이터베이스 엑세스 관리 
멀티 스레드 접속 
멀티 스토리지 엔진 지원 
서버와 호스트 
TCP/IP 
데이터베이스 엑세스 툴 
데이터를 질의/수정/삭제 하거나 반환하기 위해 그 서버에 접속하는 프로그램 
일반 클라이언트/GUI 프로그램 
상용, free 
Client
MySQL 데이터베이스 설치 
Certified Partner by
15 
- Internal Use Only - 
MySQL 버전 
MySQL 버전 별 차이점 
Version 
Features 
추가 
변경 
삭제 
5.5 
MyISAM 대신 InnoDB가 MySQL의 기본 스토리지 엔진으로 채택 
5.4.2 
Plugin버전의 InnoDB가 Built-in 버전으로 다시 적용 
5.1.38 
InnoDB Plugin 
5.1.24 
"SHOW PROFILE" 
(Enterprise version) 
5.1.12 
"general log" 파라미터 
General query log를 동적으로 변경 가능 
5.1.8 
"Mixed" 복제 모드 
5.1.6 
Partition pruning 기능 
5.1.5 
EXPLAIN PARTITIONS(파티션 테이블의 실행 계획) 지원 
"RBR"(Row Based Replication) 복제 모드 
5.1 
Plugin API 도입 
Plugin버전의 InnoDB 릴리즈 (InnoDB 의 많은 성능 개선과 변화가 있음) 
BDB 스토리지 엔진 
5.0.32 
(Community version) 
"SHOW PROFILES" 
5.0.7 
LIMIT의 파라미터도 PreparedStatement에서 변수화 가능 
5.0.5 
BIT 데이터 타입이 MEMORY, InnoDB, BDB, NDBCLUSTER 스토리지 엔진에 구현됨
16 
- Internal Use Only - 
Version 
Features 
추가 
변경 
삭제 
5.0.3 
FEDERATED 스토리지 엔진 
신규 함수 추가 
STDDEV_POP() 
STDDEV_SAMP() 
VAR_POP() 
VAR_SAMP() 
BIT 데이터 타입이 TINYINT와 호환성 없어짐 
NUMERIC와 DECIMAL 타입의 저장 방식이 String에서 Binary로 변경 
5.0.2 
TRIGGER 도입 
HAVING 조건에 SELECT컬럼, GROUP-BY컬럼, OUTER-서브쿼리의 값 사용 가능(ANSI 표준) 
5.0.1 
VIEW 도입 
HAVING 조건에 SELECT컬럼, GROUP-BY컬럼, OUTER-서브쿼리의 값 사용 가능(ANSI 표준) 
5 
StoredRoutine (Procedure,Function) 도입 
ISAM 스토리지 엔진 제거 
CURSOR 도입 
Archive 스토리지 엔진 
INFORMATION_SCHEMA 딕셔너리 데이터베이스 도입 (ANSI 표준) 
4.1.11 
Blackhole 스토리지 엔진 
4.1.4 
CVS 스토리지 엔진 
MySQL 버전 별 차이점 
MySQL 버전
17 
- Internal Use Only - 
Version 
Features 
추가 
변경 
삭제 
4.1 
SubQuery 도입 
WHOW WARNINGS 
CREATE TABLE ... LIKE ... 
GROUP_CONCAT() 구현 
유니코드(UTF8, UCS2) 지원 
GIS 관련 기능(Spatial extension) 지원 
ALTER DATABASE 명령 지원 
DUAL 테이블 내부 지원(타 DBMS와의 호환성 유지) 
"SELECT 1" 명령과 "SELECT 1 FROM DUAL" 명령은 동일 
Memory 스토리지 엔진에서 B-Tree 허용 
EXPLAIN EXTENDED 구현 
Column 코멘트 구현(CREATE TABLE...) 
PASSWORD() 함수의 알고리즘 업그레이드 
기존 알고리즘은 OLD_PASSWORD()로 변경됨 
CHAR, VARCHAR 타입의 길이가 바이트 수에서 문자수로 변경됨 
파생 테이블(Derived tables) 내에서 UNION 사용 가능 
4.0.18 
"TYPE" 키워드가 "ENGINE" 키워드로 변경(CREATE TABLE...) 
4.0.14 
InnoDB의 BLOB와 TEXT 타입에 대한 인덱스 지원 
4.0.4 
JOIN DELETE (Multiple Delete) 도입 
JOIN UPDATE (Multiple Update) 도입 
4.0.2 
Memory 스토리지 엔진에서 NULLABLE 컬럼의 인덱스 지원 
VARCHAR 컬럼의 길이가 1~255에서 0~255로 변경됨 
4.0.1 
Query Cache 도입 
4 
UNION 집합 연산 도입 
SQL_CALC_FOUND_ROWS 힌트와 FOUND_ROWS() 함수 구현 
UPDATE와 DELETE 구문에 ORDER BY 사용 허용 
3.23 
EXPLAIN(쿼리 실행계획) 구현 
전문 검색(Fulltext search) 도입 
JOIN(SELECT만) 도입 
NULL-SAFE 연산자(<=>) 도입 
길이가 0인 CHAR 컬럼 허용 
MySQL 버전 별 차이점 
MySQL 버전
18 
- Internal Use Only - 
yum -y install mysql mysql-server mysql-devel 
sudo apt-get install mysql-server mysql-client 
MySQL 설치 
MySQL 설치 각 플랫폼 별, OS 별 다양한 설치방법 지원 
OS별 binary package down load 
unpack 
cp / mv 
set configure option 
source file down load 
make – option 
Install 
set configure option 
RPM 설치 
Binary 설치 
Source 설치
19 
- Internal Use Only - 
설치 완료 상태, 환경설정 필요 
MySQL 설치 
root@lcoalhost # yum –y install mysql mysql-server mysql-devel 
… 
MySQL yum install
20 
- Internal Use Only - 
MySQL 설치 
MySQL Binary install 
root@lcoalhost # vi un pack directory/INSTALL-BINARY … 
설치 완료 상태 
환경설정 필요
21 
- Internal Use Only - 
MySQL 설치 
MySQL Source install 
root@lcoalhost # cmake  -DCMAKE_INSTALL_PREFIX=/opt/mysql  
-DDEFAULT_CHARSET=utf8  
-DDEFAULT_COLLATION=utf8_general_ci  
-DWITH_EXTRA_CHARSETS=all  
-DMYSQL_DATADIR=/opt/database/mysql  
-DENABLED_LOCAL_INFILE=1  
-DWITH_INNOBASE_STORAGE_ENGINE=1 
root@lcoalhost # chown -R mysql /opt/mysql 
root@lcoalhost # chown -R mysql /opt/database 
root@lcoalhost # ./scripts/mysql_install_db --user=mysql  
--datadir=/opt/databases/mysql 
root@lcoalhost # cp support-files/my-medium.cnf /etc/my.cnf 
root@lcoalhost # cp support-file/mysql.server /etc/init.d/mysqld 
의존성 패키지 설치 필요 
시스템 관리 능력 필요
MySQL 환경설정 
Certified Partner by
23 
- Internal Use Only - 
MySQL 환경설정 
공식 사이트와 제공되는 예제 conf 파일 참조 
제공되는 예제 conf 파일 참조 
my-small.conf, my-medium.conf, my-large.conf, my-huge.conf ….
24 
- Internal Use Only - 
MySQL 환경설정 
[client] #password = [your_password] port = 3306 socket = /tmp/mysql.sock 
[mysqld] # generic configuration options port = 3306 # socket = /tmp/3306.mysql.sock socket = /tmp/mysql.sock 
port 설정 
client 
server
25 
- Internal Use Only - 
MySQL 환경설정 
datadir=/usr/local/mysql/data 
데이터 디렉토리 설정 
pid-file=/usr/local/mysql/data/3306.pid 
pid 설정 
# log_bin = /opt/log/bin-log/mysql-bin 
log_bin = mysql-bin 
binlog_cache_size = 1M 
binlog_format = row 
bin-log 설정
26 
- Internal Use Only - 
MySQL 환경설정 
log-error=/usr/local/mysql/data/3306.mysql.log 
error log 설정 
slow_query_log=1 
slow_query_log_file=/directory/slow_query.log 
slow log 설정 
그 외 수 많은 설정 값들 
Replication 
Cluster 
Turning variables
MySQL 스토리지 엔진 소개 
Certified Partner by
28 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
향상된 엔진과 새로 추가된 엔진들
29 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
Merge My Isam 
강남구 
강남구 삼성동 
번지 : 123 
동 구분 : 삼성동 
거주자 명 : 아무개 
강남구 역삼동 
번지 : 456 
동 구분 : 역삼동 
거주자 명 : 김수한무 
번지 : 123 
동 구분 : 삼성동 
거주자 명 : 아무개
30 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
Merge My Isam 
CREATE TABLE `table001` 
( 
`aseq` INT(11) NOT NULL AUTO_INCREMENT, 
`dong-name` VARCHAR(64) COLLATE utf8_bin NOT NULL, 
`aname` VARCHAR(255) COLLATE utf8_bin NOT NULL, 
PRIMARY KEY (`aseq`) 
) ENGINE=MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; 
CREATE TABLE `table002` 
( 
`aseq` INT(11) NOT NULL AUTO_INCREMENT, 
`dong-name` VARCHAR(64) COLLATE utf8_bin NOT NULL, 
`aname` VARCHAR(255) COLLATE utf8_bin NOT NULL, 
PRIMARY KEY (`aseq`) 
) ENGINE=MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; 
삼성동 테이블 
역삼동 테이블
31 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
Merge My Isam 
CREATE TABLE `xxx` 
( 
`aseq` INT AUTO_INCREMENT PRIMARY KEY, 
`dong-name` VARCHAR(64) NOT NULL, 
`aname` VARCHAR(255) NOT NULL 
) ENGINE=MERGE UNION=(`table001`, `table002`) INSERT_METHOD=LAST; 
강남구 테이블 
primary key 
머지 된 데이터를 볼 수 있다
32 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
CSV 스토리지 엔진은 CSV에 저장된 파일 (쉼표로 분리 값) 형식을 읽고 추가 가능 
null column 미 지원 
CSV 
CREATE TABLE `csv_test` 
( 
`seq` INT default 0, 
`bank` VARCHAR(64) NOT NULL, 
`op_time` VARCHAR(64) NOT NULL, 
`end_time` VARCHAR(64) NOT NULL 
) 
CSV 형식의 데이터 
확인 가능 
file 
인덱스 미 지원
33 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
InnoDB 
Default engine 
MySQL Built-in Engine 중 유일하게 트랜잭션을 지원하는 엔진 
Low-level(record level) lock 지원 
대용량 데이터 처리에 적합 
Version 3 
Version 5 
Version 4 
Isam 
MyIsam 
InnoDB 
Other DB engines xtraDB / TokuDB Socket handler 
< MySQL default storage engine의 변화 과정 >
34 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
InnoDB 
장점 
단점 
트랜잭션 지원 
Row level lock 
장애 복구 향상 
다양한 튜닝 옵션 
진행중인 성능 및 확장 성 향상 
비유동적 Table space 영역 
Update 진행중인 engine 
고성능을 위해선 고 용량 메모리 요구 
pk 
주민번호 
이름 
나이 
주소 
1 
********** 
이순신 
9 
서울 
2 
********** 
강감찬 
10 
충남 
3 
********** 
권율 
10 
충북 
… 
101 
********** 
정약용 
11 
경남 
102 
********** 
성삼문 
9 
강원 
103 
********** 
이동현 
7 
전남 
… 
MySQL 공식 제안사항
35 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
그 외 engine`s 
ARCHIVE 스토리지 엔진 특징 
mysql> SHOW VARIABLES LIKE 'have_archive'; 
INSERT 및 SELECT은 지원 
DELETE, REPLACE, 또는 UPDATE는 비 지원 
ORDER BY 지원, BLOB 컬럼, 및 기본적으로 모든 공간(spatial)데이터 타입을 지원 
줄-레벨 잠금(row-level locking)을 사용 
필요 시 configure를 --with-archive-storage-engine 옵션과 함께 호출 
ARCHIVE 스토리지 엔진 지원여부 확인 
Row 삽입 때 압축된다. 
ARCHIVE 엔진은 zlib 무손실(lossless)데이터 압축을 사용, 여러분은 OPTIMIZE TABLE 를 사용해서 테이블을 분석하고 보다 작은 포맷에 저장할 수 있다 
ARCHIVE 스토리지 엔진의 데이터 저장 방법
36 
- Internal Use Only - 
MySQL 스토리지 엔진 소개 
그 외 engine`s 
FEDERATED engine 
로컬 데이터 파일이 존재하지 않음 
로컬 서버와 리모트 서버의 테이블 구조가 동일해야 함 
모든 스토리지 타입 지원 
로컬에서 SQL 호출 실행 
MySQL 핸들러 API (핸들러 포맷의 데이터) 
MySQL 클라이언트 API (SQL 호출로 변환된 데이터) 
리모트 데이터베이스 -> MySQL 클라이언트 API 
핸들러 포맷으로 결과 셋 변환 
핸들러 API -> 결과 열 또는 열 – 로컬에 영향을 주는 카운트 
FEDERATED engine process flow
MySQL tuning 소개 및 방법 
Certified Partner by
38 
- Internal Use Only - 
MySQL tuning 소개 및 방법 각각 구성요소들의 조율을 통해서 성능을 향상 시키는 것 
병목지점 찾기 
벤치마킹 
프로파일링 
스키마 최적화와 인덱싱 
쿼리 성능 최적화 
고급 MySQL 기능 활용 
서버 설정 최적화 
운영체제와 하드웨어 최적화 
성능 확장 및 고가용성 
응용프로그램 수준의 최적화
39 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - Thread pool MySQL은 상용버전에서만 사용가능, MariaDB, Percona 는 기본 사용가능 
기본 스레드 생성 방식 
스레드 풀 방식 
Request 
MySQL은 connection 당 Thread 를 생성한다. 
Result 가 반환되고 Thread 가 더 이상 사용되지 않으면 종료 루틴 
Response 
Request 
1 
2 
3 
4 
5 
6 
… 
Thread pool 
Response 
1 
recycle 
요청이 오고 connection 이 이루어지는 순간 부하발생 
이미 생성되어 있는 connection이 요청에 응답, connection overhead 없음
40 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - Query Profiling MySQL 5.1 버전 이후 내장 기능 
현재 세션 과정 동안 실행 문에 대한 리소스 사용을 나타냄 
프로파일링 과정 
> set profiling=1; 
프로파일링을 설정해준다. 
> Select * from store; 
> Show profiles; 
분석할 쿼리 
분석 시작 
Query ID 
> show profile for query 1 
쿼리 별 상세내역 
Query ID 
해당 쿼리의 실행 내역
41 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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 절 내부의 서브쿼리)
42 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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 명을 나타냄
43 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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 
•이전 테이블과의 조인을 위해 풀 스캔 
•(조인에 쓰인) 첫 번째 테이블이 고정이 아니라면 비효율적 
•대부분의 경우에 아주 느린 성능
44 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - Explain 활용법 
> Explain select * from store 
 possible_keys 
•MySQL 이 해당 테이블의 검색에 사용할 수 있는 인덱스들 
•possible_keys 에 나타난 인덱스들이 결과에 나타난 테이블 순서에서 실제 사용할 수 없을 수도 있음 
> Explain select * from store 
 key 
•MySQL 이 실제 사용한 key(index)
45 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - Explain 활용법 
> Explain select * from store 
 key_len 
•MySQL 이 사용한 인덱스의 길이, key 컬럼 값이 NULL 이면 이 값도 NULL 
•key_len 값으로 MySQL 이 실제 복수컬럼 키 중 얼마나 많은 부분을 사용할 것인지 알 수 있음 
> Explain select * from store 
 ref 
•행을 추출하는데 키와 함께 사용된 컬럼이나 상수 값
46 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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 쿼리에 사용된 모든 컬럼에 대한 인덱스를 찾았음을 의미
47 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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 상황일 때 시스템 정보
48 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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
49 
- Internal Use Only - 
MySQL tuning 소개 및 방법 - 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
MySQL 백업 및 복구 
Certified Partner by
51 
- Internal Use Only - 
MySQL 백업 및 복구 
Backup 방법 
1.전통적인 dump backup 방법 
2.Hot backup (상용 버전) 
3.Xtrabackup tool backup 방법 (무료 버전) 
4.상용 솔루션 backup 방법 
논리백업 
물리 백업 
물리 백업
52 
- Internal Use Only - 
MySQL 백업 및 복구 
1.Full backup Full 백업은 백업할 자료를 처음부터 끝까지 다 기록하는 것이며, Full 백업 시 완전히 데이터를 백업할 수 있지만 시간이 많이 걸리고, 시스템에 부하를 초래할 수 있음 
2.Incremental 백업 Incremental 백업은 이전의 데이터와 비교해서 새로 추가된 내용만 백업하는 방법, 빠른 시간 내에 백업을 할 수 있지만, 백업하는 시간에 따라 데이터가 완전히 백업되지 못할 경우도 있을 수 있다. 
백업정책 결정요소 
1.나의 복구 조건은 무엇인가? 
2.운용중인 시스템의 데이터베이스 전체 사용 용량이 어떻게 되는가? 
3.사용할 백업 장비와 종류, 백업할 대상이 어떤 부분인가? 
4.데이터 손실에 대한 결함 허용하는가? 
5.얼마나 자주 백업을 수행해야 하는가? 
6.시점 복구가 필요한가? 다운 타임에 대한 결함 허용 산정 : 문제확인+복구계획+시스템복구 
7.백업 보전 정책 결정 online, offline, 물리적 장기보존 
백업 전략
53 
- Internal Use Only - 
MySQL 백업 및 복구 
MySQL dump backup 
서버에 있는 모든 것의 논리 백업 생성 
# mysqldump -u[userId] -p[password] --databases [DB명] > dump.sql # mysqldump -u[userId] -p[password] [DB명] [테이블명] 
# mysqldump -u[userId] -p[password] --all-databases > dump.sql 
특정 데이터베이스만의 논리 백업 생성
54 
- Internal Use Only - 
MySQL 백업 및 복구 
MySQL dump backup 
서버에 있는 모든 것의 논리 백업 생성 # mysqldump -u[userId] -p[password] --all-databases > dump.sql 
기타 옵션 -A, --all-databases : 모든 DB 덤프 -B, --databases : 특정 DB를 덤프 --opt : 버퍼링을 비활성화, 많은 데이터를 덤프에 있는 소량의 SQL구문에 기록해 더 효율적으로 동작하도록 한다. --allow-keywords, --quote-names : 예약어를 사용하는 테이블을 덤프/복원할 수 있게 한다. --lock-alltables : 전역적으로 일관된 백업을 만들도록 "FLUSH TABLES WITH READ LOCK"을 사용한다. --tab : "SELECT INTO OUTFILE"로 파일을 덤프하여, 덤프 및 복원 속도가 매우 빠르다. -d, --no-data : 데이터는 제외하고 스키마만 덤프 하도록 한다. -t, --no-create-info : 스키마는 제외 하도록 한다.
55 
- Internal Use Only - 
MySQL 백업 및 복구 
MySQL dump restore 
# mysql -u[userId] -p[password] [DB명] < dump.sql 
백업된 dump file 을 이용 
단점 
Hot Backup 
Cool Backup
56 
- Internal Use Only - 
MySQL 백업 및 복구 
MySQL Hot backup 
MySQL Enterprise version 에서만 제공되는 툴 
Hot backup / restore 제공 
넌 블로킹(non-blocking) 백업을 수행 
쿼리 또는 업데이트를 중단시키지 않고 온라인으로 수행 
증분 백업은 이전 백업에서 변경된 데이터만 백업하도록 지원 
필요한 특정 테이블/테이블스페이스만 백업되어야 하는 경우, 부분 백업이 지원 
실제 데이터베이스 파일 사이즈에 비해 백업 사이즈를 평균적으로 70%에서 90% 이상까지 압축하여 스토리지 및 여타 비용을 절감할 수 있도록 지원 
DUMP 
replication 
Hot backup 
증분 백업 
부분 백업 
응용프로그램에 미치는 영향 
손상 감지 
백업 및 복구 속도
57 
- Internal Use Only - 
MySQL 백업 및 복구 
# mysqlbackup --defaults-file=/etc/my.cnf  
-u${DBUSER} -p${USERPS}  
--backup-dir=${TDIR}/${CURRDATE}/bkpimage  
backup-and-apply-log > ${TDIR}/${CURRDATE}/log/mbackup.log 2>&1
58 
- Internal Use Only - 
MySQL 백업 및 복구 
MySQL xtrabackup 
논 블로킹 (non-blocking) 
MYISAM 지원 
압축 
부분 백업 
증분 백업 
개별 테이블을 가져 오기 / 내보내기 
(2.0 이후 증분 스트리밍을 포함!) 스트리밍 
병렬 복사 (innodb_file_per_table의 사용과) 
InnoDB/ 
MyISAM 
Impact 
Warmth 
Backup Time 
Restore Time 
Cold backup 
very high 
cold 
very fast 
fast 
Mysql dump 
medium 
hot 
medium 
slow 
snapshotting 
high/medium 
hot/warm 
fast 
fast 
Mysql EB 
low 
hot 
fast 
fast 
xtrabackup 
low 
hot 
fast 
fast
59 
- Internal Use Only - 
MySQL 백업 및 복구 
Xtrabackup working flow
60 
- Internal Use Only - 
MySQL 백업 및 복구 
Backing up 
1. Copy datafiles while recording transaction log changes 
2. FLUSH TABLES WITH READ LOCK; 
3. Get binlog position? 
4. Copy all .MYD, .MYI, .TRG, .TRN, ... files 
5. Stop recording transaction log changes 
6. UNLOCK TABLES; 
Xtrabackup simple description 
# innobackupex /path/to/your/backups # innobackupex --apply-log  /path/to/your/backups/2012-06-21_13-45-00/ # innobackupex --copy-back  /path/to/your/backups/2012-06-21_13-45-00/ # chown -R mysql:mysql /var/lib/mysql 
Simple full backup and restore 
Preparing/Restoring 7. Prepare backup by applying recorded tlog changes 8. Restoring files to original location
61 
- Internal Use Only - 
MySQL 백업 및 복구 
일반적인 파일단위 백업 서비스와는 달리 이미지백업 (Volume Snapshots 방식) 이면서 분 단위까지 백업을 받고 필요 시 특정 백업 시점으로 복원 할 수 있는 백업 서비스로서 Continuous Data Protection Back-Up 이라는 의미 입니다. 
Continuous Data Protection Back-Up
62 
- Internal Use Only - 
MySQL 백업 및 복구 
저렴한 비용의 DR 구축 가장 기본적은 DR시스템 ( 실시간 백업 및 복원 ) 을 저렴한 비용으로 구축이 가능 합니다. OS, File, DB, Image. 동영상 등등을 지속적으로 백업하고 필요 시 특정 시점으로 복원 할 수 있습니다. 
최소 분 단위의 백업 작업 가능 CDP백업은 최대 분 단위 까지 지속적인 백업을 할 수 있습니다. ( 1일 150회 이상 ) 
중복백업을 하지 않는 알고리즘 CDP백업은 분 단위까지 백업 작업을 수행 하지만 중복백업을 하지 않아 백업 저장공간을 최소화 할 수 있습니다. 
복원 시 최대 문제발생 15분 전의 상태로 복구 가능 CDP백업은 일반 백업서버와 같이 문제발생시 하루 전으로 복원 하는 것이 아니라, 문제발생 15분 전 상태로 복구가 가능하여 Data Loss를 최소화 할 수 있습니다. 
서버에 부담을 주지 않는 백업 서비스 CDP백업은 최초 백업을 제외 하고는 백업동작 시 서버에 부하를 주지 않는 특허 받은 알고리즘을 통해 최적의 백업 환경을 제공 합니다. 서버가 가장 바쁜 시간대에도 백업이 가능 합니다. 
CDP Backup 의 특징
63 
- Internal Use Only - 
MySQL 백업 및 복구 
CDP Backup 의 장점
64 
- Internal Use Only - 
MySQL 백업 및 복구 
항목 / 구분 
수동백업 
이미지백업 
CDP백업 
백업을 위한 통합 콘솔 제공 
No 
Yes 
Yes 
스케줄 백업 지원 
No 
Yes 
Yes 
증분 백업 지원 
No 
Yes 
Yes 
백업 작업 시 시스템 부하 여부 
심함 
심함 
거의없음 
백업시점 및 복원시점 자동 관리 
No 
No 
Yes 
네트워크 백업 전문성 
No 
No 
Yes 
Bare Metal Restore ( OS백업 및 복구 ) 
No 
Yes 
Yes 
백업 주기 관리 
일 
일,시간 
일,시간,분 
CDP 백업 방식 비교
65 
- Internal Use Only - 
MySQL 백업 및 복구 
CDP 백업 지원 가능 시스템 (for Agent) 
CPU 
Minimum: Pentium3 Recommended: Pentium4 
Physical Memory 
Minimum: 512 MB Recommended: 1 GB 
NTFS 
512 byte - 32KB cluster sizes 
Free Disk Space 
Disks and Volumes should be No More than 85% full to leave room for copy-on-write Volume Shadow Copy Service snapshot operations. 
Supported File Systems 
ext2, ext3, ext4 (CDP 2.20+), reiserfs, Linux Swap 
32-Bit Windows 
Windows XP SP2+, Windows Server 2003 SP2+, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 
64-Bit Windows 
Windows XP SP2+, Windows Server 2003 SP2+, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 
32-Bit Linux 
Most 2.4 & 2.6 Linux Kernels. See Supported Linux Distributions. 
64-Bit Linux 
Most 2.4 & 2.6 Linux Kernels. See Supported Linux Distributions. 
OS 별
66 
- Internal Use Only - 
MySQL 백업 및 복구 
기존의 백업 솔루션과 달리 백업 용량이 최소화 됨. 
백업 및 복원 시점을 최소 분 단위 까지 관리 가능. 
시스템 부하가 거의 없어 서버의 서비스 성능을 유지 할 수 있음. 
OS 및 Data, DB 까지 포함한 백업. 
저렴한 비용으로 DR 구축 가능 
CDP 백업 도입 효과 
MySQL 실시간 백업 
문제발생시 특정 테이블만 복원 가능. MySQL 무중단 백업 ! Transaction 무 손실 ! 
CDP백업- MySQL Special 백업
67 
- Internal Use Only - 
MySQL 백업 및 복구 
CDP 백업 서비스 구성도 
CDP은 다음과 같은 고객님께 권장 합니다. 
서버의 OS 및 파일에 대하여 백업이 필요한 경우. 
매우 중요한 Data를 운용 하는 경우. 
DB를 운영하여 문제 발생시 Data Loss를 최소화 하여야 하는 경우. 
만약에 발생할 수 있는 실수로 인한 Data 유실 시 빠른 복원이 필요한 경우.
MySQL Upgrade 
Certified Partner by
69 
- Internal Use Only - 
……. 
MySQL Upgrade 
Upgrade utility 
mysql_upgrade는 mysql 에서 기본 제공되는 유틸리티입니다
70 
- Internal Use Only - 
MySQL Upgrade 
Upgrade utility 
prompt> mysql_upgrade --help 
…
71 
- Internal Use Only - 
MySQL Upgrade 
Upgrade utility 
prompt> mysql_upgrade -u user -p password --datadir=/user data directory... 
MySQL System table User define table`s
72 
- Internal Use Only - 
MySQL Upgrade 
Upgrade utility 
prompt> mysql_check --check-upgrade --all-database --auto-repair 
각 테이블들에 대한 체크
73 
- Internal Use Only - 
OPEN SHARE CONTRIBUTE ADOPT REUSE

More Related Content

What's hot

MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼NeoClova
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다Arawn Park
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestI Goo Lee
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼NeoClova
 
Off-heaping the Apache HBase Read Path
Off-heaping the Apache HBase Read Path Off-heaping the Apache HBase Read Path
Off-heaping the Apache HBase Read Path HBaseCon
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바NeoClova
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsMariaDB plc
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개NeoClova
 
HBase Blockcache 101
HBase Blockcache 101HBase Blockcache 101
HBase Blockcache 101Nick Dimiduk
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바NeoClova
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바NeoClova
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1NeoClova
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교Woo Yeong Choi
 
Airflow at lyft
Airflow at lyftAirflow at lyft
Airflow at lyftTao Feng
 

What's hot (20)

MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼MariaDB MaxScale monitor 매뉴얼
MariaDB MaxScale monitor 매뉴얼
 
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
잘 키운 모노리스 하나 열 마이크로서비스 안 부럽다
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
Off-heaping the Apache HBase Read Path
Off-heaping the Apache HBase Read Path Off-heaping the Apache HBase Read Path
Off-heaping the Apache HBase Read Path
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
Planning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera ClusterPlanning for Disaster Recovery (DR) with Galera Cluster
Planning for Disaster Recovery (DR) with Galera Cluster
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write Paths
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개Percona server for MySQL 제품 소개
Percona server for MySQL 제품 소개
 
HBase Blockcache 101
HBase Blockcache 101HBase Blockcache 101
HBase Blockcache 101
 
MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바MySQL Advanced Administrator 2021 - 네오클로바
MySQL Advanced Administrator 2021 - 네오클로바
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
Airflow at lyft
Airflow at lyftAirflow at lyft
Airflow at lyft
 

Similar to [오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법

MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개rockplace
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOI Goo Lee
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQLrockplace
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개NeoClova
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQLrockplace
 
DB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLDB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLrockplace
 
GoldenGate for MySQL 설치 시 필요한 사항
GoldenGate for MySQL 설치 시 필요한 사항GoldenGate for MySQL 설치 시 필요한 사항
GoldenGate for MySQL 설치 시 필요한 사항정명훈 Jerry Jeong
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetesrockplace
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육 Sangmo Kim
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)Amazon Web Services Korea
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena DollyJi-Woong Choi
 
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble ShootingJi-Woong Choi
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty ServerJungWoon Lee
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdfHeeJung Chae
 
MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발Oracle Korea
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 

Similar to [오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법 (20)

MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개MySQL InnoDB Cluster 소개
MySQL InnoDB Cluster 소개
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
 
MariaDB 제품 소개
MariaDB 제품 소개MariaDB 제품 소개
MariaDB 제품 소개
 
Azure Database for MySQL
Azure Database for MySQLAzure Database for MySQL
Azure Database for MySQL
 
DB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQLDB Migration to Azure Database for MySQL
DB Migration to Azure Database for MySQL
 
GoldenGate for MySQL 설치 시 필요한 사항
GoldenGate for MySQL 설치 시 필요한 사항GoldenGate for MySQL 설치 시 필요한 사항
GoldenGate for MySQL 설치 시 필요한 사항
 
MySQL operator for_kubernetes
MySQL operator for_kubernetesMySQL operator for_kubernetes
MySQL operator for_kubernetes
 
MariaDB Administrator 교육
MariaDB Administrator 교육 MariaDB Administrator 교육
MariaDB Administrator 교육
 
steeleye Replication
steeleye Replication steeleye Replication
steeleye Replication
 
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
[오픈소스컨설팅]Day #3 MySQL Monitoring, Trouble Shooting
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf[Ansible] Solution Guide V0.4_20181204.pdf
[Ansible] Solution Guide V0.4_20181204.pdf
 
MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발MySQL Document Store를 활용한 NoSQL 개발
MySQL Document Store를 활용한 NoSQL 개발
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 

More from Ji-Woong Choi

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-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
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3Ji-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
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-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
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick GuideJi-Woong Choi
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편Ji-Woong Choi
 

More from Ji-Woong Choi (20)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] 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
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]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
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] 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
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 

[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법

  • 1. MySQL 교육자료 주식회사 오픈소스컨설팅
  • 2. 2 - Internal Use Only - 회사 소개 오픈소스 컨설팅은 오픈 소스에 전문적인 컨설팅 기업으로써 Technical Architect/Application Architect 컨설팅, 클라우드 관련 솔루션을 제공하고 있으며, 레드햇과 같은 오픈소스 벤더의 솔루션의 기술지원 사업을 수행합니다. 오픈소스 컨설팅은 오픈소스 운영체제/웹서버/미들웨어를 전문적으로 지원 하는 회사입니다. 또한 시스템 인프라, 개발 인프라를 위한 TA/AA에 대한 컨설팅 서비스를 지원하고 있으며, Athena 제품군을 보유하고 있습니다. Solution • Athena SQS • Athena Provisioning • Athena Monitoring • Other Solution Frameworks Consulting • 시스템 아키텍처 컨설팅 • Amazon AWS 컨설팅 • Technical/Application Architect • Middleware/Linux Dedicated Engineer Technical Support • Red Hat Linux, Virtualization • Red Hat JBoss Middleware • Apache Web Server, Tomcat • MySQL/MariaDB/Percona 컨설팅 영역 오픈소스 기술지원 솔루션 영역
  • 3. Day #1 MySQL introduction Certified Partner by
  • 4. 4 - Internal Use Only - 목차 MySQL 소개 간략한 소개 version history MySQL 사용처 제품 군 변화 시장 변화 MySQL 구성 MySQL 클라이언트 / 서버 개념 클라이언트 프로그램 MySQL 설치 MySQL 버전 MySQL 설치 MySQL 환경 설정 환경설정, 변수 설정 MySQL 스토리지 엔진 소개 MySQL tuning 소개 및 방법 데이터 백업/복구 방법 백업 복구 MySQL Upgrade
  • 6. 6 - Internal Use Only - MySQL 소개 MySQL 은 세계에서 가장 많이 쓰이는 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS) •빠른 성능과 쉬운 사용자 구성 •다중 스레드, 다중 사용자 형식의 구조 질의어 형식 •이중 라이선스 ( GPL, 상용 라이선스 ) •다수의 API 제공 PHP, Perl, 파이썬, 자바, .NET, MyODBC, Ruby , delphi , MySQL C 커넥터…. •플랫폼에 대한 자유 •크로스 플랫폼 지원 •수 많은 커뮤니티 인프라 MySQL에 대한 간략한 소개
  • 7. 7 - Internal Use Only - MySQL version history 1994년 MySQL의 원 개발 1995년 5월 최초의 국제화판 1998년 1월 8일 www.mysql.com 에서 출시 2004년 10월 4.1 출시 •R 트리와 B 트리, 서브쿼리, prepared statements 지원 2005년 10월 5.0 제품 출시 •커서, 저장 프로시저, 트리거, 뷰, XA 트랜잭션 지원 2008년 11월 27일 5.1 출시 •이벤트 스케줄러, 파티셔닝, 플러그인 API, 열 기반의 복제, 서버 로그 테이블 2010년 12월 5.5 성능 향상과 특징 •기본 스토리지 엔진이 InnoDB이며, 이것은 트랜잭션과 참조 무결성 제한을 지원한다. •개선된 InnoDB I/O 서브시스템 •향상된 SMP 지원 •Semi synchronous 복제 •SQL 표준에 대응한 SIGNAL 과 RESIGNAL 구문 •유니코드 문자 셋 utf16, utf32, utf8mb4 지원 •사용자 정의 파티셔닝에 대한 새로운 옵션 이슈로 살펴 본 MySQL history
  • 8. 8 - Internal Use Only - MySQL 사용처
  • 9. 9 - Internal Use Only - MySQL 제품 군 변화 provider 오픈 소스 시장에서의 MySQL 제품 군의 변화 개발지침 등에 대한 의견 차이 2009년 Monty Program AB사를 설립하고 MariaDB 개발 시작 provider
  • 10. 10 - Internal Use Only - MariaDB 시장변화 Oracle에 대한 MySQL 사용자들의 입장변화 2009년 12월 설문 결과에 따르면, MySQL 사용자들은 Oracle의 MySQL 인수에 대한 입장이 '변화 없음(No Change)'에 60% 이상이었으나, 2013년 초 설문 결과에 따르면 '변화 없음(No Change)'이 45%, '덜 쓰겠다(Less likely to use MySQL)'가 47% 수준으로 과거에 비해 MySQL 사용자들은 Oracle사의 인수에 대해 부정적 견해가 더 많아진 것
  • 11. 11 - Internal Use Only - MariaDB 시장변화 MySQL 제품 군들의 시장 변화 MySQL 생태계 내에서 Oracle MySQL의 비중이 점점 줄어들고 있다는 결과이다. 2012년 MySQL, MariaDB, Percona 3개 제품 중 압도적으로 높은 비율(91%)을 보인 MySQL은, MySQL로부터 분기(fork)된 다양한 Eco 제품 군의 선전으로 인해 2013년 점유율이 62%로 감소되었고, 2018년에는 무려 50% 미만으로 예측하고 있다.
  • 12. MySQL 데이터베이스 구성 Certified Partner by
  • 13. 13 - Internal Use Only - MySQL 구성 MySQL 클라이언트 / 서버 개념 mysqld 데이터베이스 엑세스 관리 멀티 스레드 접속 멀티 스토리지 엔진 지원 서버와 호스트 TCP/IP 데이터베이스 엑세스 툴 데이터를 질의/수정/삭제 하거나 반환하기 위해 그 서버에 접속하는 프로그램 일반 클라이언트/GUI 프로그램 상용, free Client
  • 14. MySQL 데이터베이스 설치 Certified Partner by
  • 15. 15 - Internal Use Only - MySQL 버전 MySQL 버전 별 차이점 Version Features 추가 변경 삭제 5.5 MyISAM 대신 InnoDB가 MySQL의 기본 스토리지 엔진으로 채택 5.4.2 Plugin버전의 InnoDB가 Built-in 버전으로 다시 적용 5.1.38 InnoDB Plugin 5.1.24 "SHOW PROFILE" (Enterprise version) 5.1.12 "general log" 파라미터 General query log를 동적으로 변경 가능 5.1.8 "Mixed" 복제 모드 5.1.6 Partition pruning 기능 5.1.5 EXPLAIN PARTITIONS(파티션 테이블의 실행 계획) 지원 "RBR"(Row Based Replication) 복제 모드 5.1 Plugin API 도입 Plugin버전의 InnoDB 릴리즈 (InnoDB 의 많은 성능 개선과 변화가 있음) BDB 스토리지 엔진 5.0.32 (Community version) "SHOW PROFILES" 5.0.7 LIMIT의 파라미터도 PreparedStatement에서 변수화 가능 5.0.5 BIT 데이터 타입이 MEMORY, InnoDB, BDB, NDBCLUSTER 스토리지 엔진에 구현됨
  • 16. 16 - Internal Use Only - Version Features 추가 변경 삭제 5.0.3 FEDERATED 스토리지 엔진 신규 함수 추가 STDDEV_POP() STDDEV_SAMP() VAR_POP() VAR_SAMP() BIT 데이터 타입이 TINYINT와 호환성 없어짐 NUMERIC와 DECIMAL 타입의 저장 방식이 String에서 Binary로 변경 5.0.2 TRIGGER 도입 HAVING 조건에 SELECT컬럼, GROUP-BY컬럼, OUTER-서브쿼리의 값 사용 가능(ANSI 표준) 5.0.1 VIEW 도입 HAVING 조건에 SELECT컬럼, GROUP-BY컬럼, OUTER-서브쿼리의 값 사용 가능(ANSI 표준) 5 StoredRoutine (Procedure,Function) 도입 ISAM 스토리지 엔진 제거 CURSOR 도입 Archive 스토리지 엔진 INFORMATION_SCHEMA 딕셔너리 데이터베이스 도입 (ANSI 표준) 4.1.11 Blackhole 스토리지 엔진 4.1.4 CVS 스토리지 엔진 MySQL 버전 별 차이점 MySQL 버전
  • 17. 17 - Internal Use Only - Version Features 추가 변경 삭제 4.1 SubQuery 도입 WHOW WARNINGS CREATE TABLE ... LIKE ... GROUP_CONCAT() 구현 유니코드(UTF8, UCS2) 지원 GIS 관련 기능(Spatial extension) 지원 ALTER DATABASE 명령 지원 DUAL 테이블 내부 지원(타 DBMS와의 호환성 유지) "SELECT 1" 명령과 "SELECT 1 FROM DUAL" 명령은 동일 Memory 스토리지 엔진에서 B-Tree 허용 EXPLAIN EXTENDED 구현 Column 코멘트 구현(CREATE TABLE...) PASSWORD() 함수의 알고리즘 업그레이드 기존 알고리즘은 OLD_PASSWORD()로 변경됨 CHAR, VARCHAR 타입의 길이가 바이트 수에서 문자수로 변경됨 파생 테이블(Derived tables) 내에서 UNION 사용 가능 4.0.18 "TYPE" 키워드가 "ENGINE" 키워드로 변경(CREATE TABLE...) 4.0.14 InnoDB의 BLOB와 TEXT 타입에 대한 인덱스 지원 4.0.4 JOIN DELETE (Multiple Delete) 도입 JOIN UPDATE (Multiple Update) 도입 4.0.2 Memory 스토리지 엔진에서 NULLABLE 컬럼의 인덱스 지원 VARCHAR 컬럼의 길이가 1~255에서 0~255로 변경됨 4.0.1 Query Cache 도입 4 UNION 집합 연산 도입 SQL_CALC_FOUND_ROWS 힌트와 FOUND_ROWS() 함수 구현 UPDATE와 DELETE 구문에 ORDER BY 사용 허용 3.23 EXPLAIN(쿼리 실행계획) 구현 전문 검색(Fulltext search) 도입 JOIN(SELECT만) 도입 NULL-SAFE 연산자(<=>) 도입 길이가 0인 CHAR 컬럼 허용 MySQL 버전 별 차이점 MySQL 버전
  • 18. 18 - Internal Use Only - yum -y install mysql mysql-server mysql-devel sudo apt-get install mysql-server mysql-client MySQL 설치 MySQL 설치 각 플랫폼 별, OS 별 다양한 설치방법 지원 OS별 binary package down load unpack cp / mv set configure option source file down load make – option Install set configure option RPM 설치 Binary 설치 Source 설치
  • 19. 19 - Internal Use Only - 설치 완료 상태, 환경설정 필요 MySQL 설치 root@lcoalhost # yum –y install mysql mysql-server mysql-devel … MySQL yum install
  • 20. 20 - Internal Use Only - MySQL 설치 MySQL Binary install root@lcoalhost # vi un pack directory/INSTALL-BINARY … 설치 완료 상태 환경설정 필요
  • 21. 21 - Internal Use Only - MySQL 설치 MySQL Source install root@lcoalhost # cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DMYSQL_DATADIR=/opt/database/mysql -DENABLED_LOCAL_INFILE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 root@lcoalhost # chown -R mysql /opt/mysql root@lcoalhost # chown -R mysql /opt/database root@lcoalhost # ./scripts/mysql_install_db --user=mysql --datadir=/opt/databases/mysql root@lcoalhost # cp support-files/my-medium.cnf /etc/my.cnf root@lcoalhost # cp support-file/mysql.server /etc/init.d/mysqld 의존성 패키지 설치 필요 시스템 관리 능력 필요
  • 23. 23 - Internal Use Only - MySQL 환경설정 공식 사이트와 제공되는 예제 conf 파일 참조 제공되는 예제 conf 파일 참조 my-small.conf, my-medium.conf, my-large.conf, my-huge.conf ….
  • 24. 24 - Internal Use Only - MySQL 환경설정 [client] #password = [your_password] port = 3306 socket = /tmp/mysql.sock [mysqld] # generic configuration options port = 3306 # socket = /tmp/3306.mysql.sock socket = /tmp/mysql.sock port 설정 client server
  • 25. 25 - Internal Use Only - MySQL 환경설정 datadir=/usr/local/mysql/data 데이터 디렉토리 설정 pid-file=/usr/local/mysql/data/3306.pid pid 설정 # log_bin = /opt/log/bin-log/mysql-bin log_bin = mysql-bin binlog_cache_size = 1M binlog_format = row bin-log 설정
  • 26. 26 - Internal Use Only - MySQL 환경설정 log-error=/usr/local/mysql/data/3306.mysql.log error log 설정 slow_query_log=1 slow_query_log_file=/directory/slow_query.log slow log 설정 그 외 수 많은 설정 값들 Replication Cluster Turning variables
  • 27. MySQL 스토리지 엔진 소개 Certified Partner by
  • 28. 28 - Internal Use Only - MySQL 스토리지 엔진 소개 향상된 엔진과 새로 추가된 엔진들
  • 29. 29 - Internal Use Only - MySQL 스토리지 엔진 소개 Merge My Isam 강남구 강남구 삼성동 번지 : 123 동 구분 : 삼성동 거주자 명 : 아무개 강남구 역삼동 번지 : 456 동 구분 : 역삼동 거주자 명 : 김수한무 번지 : 123 동 구분 : 삼성동 거주자 명 : 아무개
  • 30. 30 - Internal Use Only - MySQL 스토리지 엔진 소개 Merge My Isam CREATE TABLE `table001` ( `aseq` INT(11) NOT NULL AUTO_INCREMENT, `dong-name` VARCHAR(64) COLLATE utf8_bin NOT NULL, `aname` VARCHAR(255) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`aseq`) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; CREATE TABLE `table002` ( `aseq` INT(11) NOT NULL AUTO_INCREMENT, `dong-name` VARCHAR(64) COLLATE utf8_bin NOT NULL, `aname` VARCHAR(255) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`aseq`) ) ENGINE=MYISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ; 삼성동 테이블 역삼동 테이블
  • 31. 31 - Internal Use Only - MySQL 스토리지 엔진 소개 Merge My Isam CREATE TABLE `xxx` ( `aseq` INT AUTO_INCREMENT PRIMARY KEY, `dong-name` VARCHAR(64) NOT NULL, `aname` VARCHAR(255) NOT NULL ) ENGINE=MERGE UNION=(`table001`, `table002`) INSERT_METHOD=LAST; 강남구 테이블 primary key 머지 된 데이터를 볼 수 있다
  • 32. 32 - Internal Use Only - MySQL 스토리지 엔진 소개 CSV 스토리지 엔진은 CSV에 저장된 파일 (쉼표로 분리 값) 형식을 읽고 추가 가능 null column 미 지원 CSV CREATE TABLE `csv_test` ( `seq` INT default 0, `bank` VARCHAR(64) NOT NULL, `op_time` VARCHAR(64) NOT NULL, `end_time` VARCHAR(64) NOT NULL ) CSV 형식의 데이터 확인 가능 file 인덱스 미 지원
  • 33. 33 - Internal Use Only - MySQL 스토리지 엔진 소개 InnoDB Default engine MySQL Built-in Engine 중 유일하게 트랜잭션을 지원하는 엔진 Low-level(record level) lock 지원 대용량 데이터 처리에 적합 Version 3 Version 5 Version 4 Isam MyIsam InnoDB Other DB engines xtraDB / TokuDB Socket handler < MySQL default storage engine의 변화 과정 >
  • 34. 34 - Internal Use Only - MySQL 스토리지 엔진 소개 InnoDB 장점 단점 트랜잭션 지원 Row level lock 장애 복구 향상 다양한 튜닝 옵션 진행중인 성능 및 확장 성 향상 비유동적 Table space 영역 Update 진행중인 engine 고성능을 위해선 고 용량 메모리 요구 pk 주민번호 이름 나이 주소 1 ********** 이순신 9 서울 2 ********** 강감찬 10 충남 3 ********** 권율 10 충북 … 101 ********** 정약용 11 경남 102 ********** 성삼문 9 강원 103 ********** 이동현 7 전남 … MySQL 공식 제안사항
  • 35. 35 - Internal Use Only - MySQL 스토리지 엔진 소개 그 외 engine`s ARCHIVE 스토리지 엔진 특징 mysql> SHOW VARIABLES LIKE 'have_archive'; INSERT 및 SELECT은 지원 DELETE, REPLACE, 또는 UPDATE는 비 지원 ORDER BY 지원, BLOB 컬럼, 및 기본적으로 모든 공간(spatial)데이터 타입을 지원 줄-레벨 잠금(row-level locking)을 사용 필요 시 configure를 --with-archive-storage-engine 옵션과 함께 호출 ARCHIVE 스토리지 엔진 지원여부 확인 Row 삽입 때 압축된다. ARCHIVE 엔진은 zlib 무손실(lossless)데이터 압축을 사용, 여러분은 OPTIMIZE TABLE 를 사용해서 테이블을 분석하고 보다 작은 포맷에 저장할 수 있다 ARCHIVE 스토리지 엔진의 데이터 저장 방법
  • 36. 36 - Internal Use Only - MySQL 스토리지 엔진 소개 그 외 engine`s FEDERATED engine 로컬 데이터 파일이 존재하지 않음 로컬 서버와 리모트 서버의 테이블 구조가 동일해야 함 모든 스토리지 타입 지원 로컬에서 SQL 호출 실행 MySQL 핸들러 API (핸들러 포맷의 데이터) MySQL 클라이언트 API (SQL 호출로 변환된 데이터) 리모트 데이터베이스 -> MySQL 클라이언트 API 핸들러 포맷으로 결과 셋 변환 핸들러 API -> 결과 열 또는 열 – 로컬에 영향을 주는 카운트 FEDERATED engine process flow
  • 37. MySQL tuning 소개 및 방법 Certified Partner by
  • 38. 38 - Internal Use Only - MySQL tuning 소개 및 방법 각각 구성요소들의 조율을 통해서 성능을 향상 시키는 것 병목지점 찾기 벤치마킹 프로파일링 스키마 최적화와 인덱싱 쿼리 성능 최적화 고급 MySQL 기능 활용 서버 설정 최적화 운영체제와 하드웨어 최적화 성능 확장 및 고가용성 응용프로그램 수준의 최적화
  • 39. 39 - Internal Use Only - MySQL tuning 소개 및 방법 - Thread pool MySQL은 상용버전에서만 사용가능, MariaDB, Percona 는 기본 사용가능 기본 스레드 생성 방식 스레드 풀 방식 Request MySQL은 connection 당 Thread 를 생성한다. Result 가 반환되고 Thread 가 더 이상 사용되지 않으면 종료 루틴 Response Request 1 2 3 4 5 6 … Thread pool Response 1 recycle 요청이 오고 connection 이 이루어지는 순간 부하발생 이미 생성되어 있는 connection이 요청에 응답, connection overhead 없음
  • 40. 40 - Internal Use Only - MySQL tuning 소개 및 방법 - Query Profiling MySQL 5.1 버전 이후 내장 기능 현재 세션 과정 동안 실행 문에 대한 리소스 사용을 나타냄 프로파일링 과정 > set profiling=1; 프로파일링을 설정해준다. > Select * from store; > Show profiles; 분석할 쿼리 분석 시작 Query ID > show profile for query 1 쿼리 별 상세내역 Query ID 해당 쿼리의 실행 내역
  • 41. 41 - Internal Use Only - MySQL tuning 소개 및 방법 - 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 절 내부의 서브쿼리)
  • 42. 42 - Internal Use Only - MySQL tuning 소개 및 방법 - 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 명을 나타냄
  • 43. 43 - Internal Use Only - MySQL tuning 소개 및 방법 - 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 •이전 테이블과의 조인을 위해 풀 스캔 •(조인에 쓰인) 첫 번째 테이블이 고정이 아니라면 비효율적 •대부분의 경우에 아주 느린 성능
  • 44. 44 - Internal Use Only - MySQL tuning 소개 및 방법 - Explain 활용법 > Explain select * from store  possible_keys •MySQL 이 해당 테이블의 검색에 사용할 수 있는 인덱스들 •possible_keys 에 나타난 인덱스들이 결과에 나타난 테이블 순서에서 실제 사용할 수 없을 수도 있음 > Explain select * from store  key •MySQL 이 실제 사용한 key(index)
  • 45. 45 - Internal Use Only - MySQL tuning 소개 및 방법 - Explain 활용법 > Explain select * from store  key_len •MySQL 이 사용한 인덱스의 길이, key 컬럼 값이 NULL 이면 이 값도 NULL •key_len 값으로 MySQL 이 실제 복수컬럼 키 중 얼마나 많은 부분을 사용할 것인지 알 수 있음 > Explain select * from store  ref •행을 추출하는데 키와 함께 사용된 컬럼이나 상수 값
  • 46. 46 - Internal Use Only - MySQL tuning 소개 및 방법 - 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 쿼리에 사용된 모든 컬럼에 대한 인덱스를 찾았음을 의미
  • 47. 47 - Internal Use Only - MySQL tuning 소개 및 방법 - 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 상황일 때 시스템 정보
  • 48. 48 - Internal Use Only - MySQL tuning 소개 및 방법 - 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
  • 49. 49 - Internal Use Only - MySQL tuning 소개 및 방법 - 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
  • 50. MySQL 백업 및 복구 Certified Partner by
  • 51. 51 - Internal Use Only - MySQL 백업 및 복구 Backup 방법 1.전통적인 dump backup 방법 2.Hot backup (상용 버전) 3.Xtrabackup tool backup 방법 (무료 버전) 4.상용 솔루션 backup 방법 논리백업 물리 백업 물리 백업
  • 52. 52 - Internal Use Only - MySQL 백업 및 복구 1.Full backup Full 백업은 백업할 자료를 처음부터 끝까지 다 기록하는 것이며, Full 백업 시 완전히 데이터를 백업할 수 있지만 시간이 많이 걸리고, 시스템에 부하를 초래할 수 있음 2.Incremental 백업 Incremental 백업은 이전의 데이터와 비교해서 새로 추가된 내용만 백업하는 방법, 빠른 시간 내에 백업을 할 수 있지만, 백업하는 시간에 따라 데이터가 완전히 백업되지 못할 경우도 있을 수 있다. 백업정책 결정요소 1.나의 복구 조건은 무엇인가? 2.운용중인 시스템의 데이터베이스 전체 사용 용량이 어떻게 되는가? 3.사용할 백업 장비와 종류, 백업할 대상이 어떤 부분인가? 4.데이터 손실에 대한 결함 허용하는가? 5.얼마나 자주 백업을 수행해야 하는가? 6.시점 복구가 필요한가? 다운 타임에 대한 결함 허용 산정 : 문제확인+복구계획+시스템복구 7.백업 보전 정책 결정 online, offline, 물리적 장기보존 백업 전략
  • 53. 53 - Internal Use Only - MySQL 백업 및 복구 MySQL dump backup 서버에 있는 모든 것의 논리 백업 생성 # mysqldump -u[userId] -p[password] --databases [DB명] > dump.sql # mysqldump -u[userId] -p[password] [DB명] [테이블명] # mysqldump -u[userId] -p[password] --all-databases > dump.sql 특정 데이터베이스만의 논리 백업 생성
  • 54. 54 - Internal Use Only - MySQL 백업 및 복구 MySQL dump backup 서버에 있는 모든 것의 논리 백업 생성 # mysqldump -u[userId] -p[password] --all-databases > dump.sql 기타 옵션 -A, --all-databases : 모든 DB 덤프 -B, --databases : 특정 DB를 덤프 --opt : 버퍼링을 비활성화, 많은 데이터를 덤프에 있는 소량의 SQL구문에 기록해 더 효율적으로 동작하도록 한다. --allow-keywords, --quote-names : 예약어를 사용하는 테이블을 덤프/복원할 수 있게 한다. --lock-alltables : 전역적으로 일관된 백업을 만들도록 "FLUSH TABLES WITH READ LOCK"을 사용한다. --tab : "SELECT INTO OUTFILE"로 파일을 덤프하여, 덤프 및 복원 속도가 매우 빠르다. -d, --no-data : 데이터는 제외하고 스키마만 덤프 하도록 한다. -t, --no-create-info : 스키마는 제외 하도록 한다.
  • 55. 55 - Internal Use Only - MySQL 백업 및 복구 MySQL dump restore # mysql -u[userId] -p[password] [DB명] < dump.sql 백업된 dump file 을 이용 단점 Hot Backup Cool Backup
  • 56. 56 - Internal Use Only - MySQL 백업 및 복구 MySQL Hot backup MySQL Enterprise version 에서만 제공되는 툴 Hot backup / restore 제공 넌 블로킹(non-blocking) 백업을 수행 쿼리 또는 업데이트를 중단시키지 않고 온라인으로 수행 증분 백업은 이전 백업에서 변경된 데이터만 백업하도록 지원 필요한 특정 테이블/테이블스페이스만 백업되어야 하는 경우, 부분 백업이 지원 실제 데이터베이스 파일 사이즈에 비해 백업 사이즈를 평균적으로 70%에서 90% 이상까지 압축하여 스토리지 및 여타 비용을 절감할 수 있도록 지원 DUMP replication Hot backup 증분 백업 부분 백업 응용프로그램에 미치는 영향 손상 감지 백업 및 복구 속도
  • 57. 57 - Internal Use Only - MySQL 백업 및 복구 # mysqlbackup --defaults-file=/etc/my.cnf -u${DBUSER} -p${USERPS} --backup-dir=${TDIR}/${CURRDATE}/bkpimage backup-and-apply-log > ${TDIR}/${CURRDATE}/log/mbackup.log 2>&1
  • 58. 58 - Internal Use Only - MySQL 백업 및 복구 MySQL xtrabackup 논 블로킹 (non-blocking) MYISAM 지원 압축 부분 백업 증분 백업 개별 테이블을 가져 오기 / 내보내기 (2.0 이후 증분 스트리밍을 포함!) 스트리밍 병렬 복사 (innodb_file_per_table의 사용과) InnoDB/ MyISAM Impact Warmth Backup Time Restore Time Cold backup very high cold very fast fast Mysql dump medium hot medium slow snapshotting high/medium hot/warm fast fast Mysql EB low hot fast fast xtrabackup low hot fast fast
  • 59. 59 - Internal Use Only - MySQL 백업 및 복구 Xtrabackup working flow
  • 60. 60 - Internal Use Only - MySQL 백업 및 복구 Backing up 1. Copy datafiles while recording transaction log changes 2. FLUSH TABLES WITH READ LOCK; 3. Get binlog position? 4. Copy all .MYD, .MYI, .TRG, .TRN, ... files 5. Stop recording transaction log changes 6. UNLOCK TABLES; Xtrabackup simple description # innobackupex /path/to/your/backups # innobackupex --apply-log /path/to/your/backups/2012-06-21_13-45-00/ # innobackupex --copy-back /path/to/your/backups/2012-06-21_13-45-00/ # chown -R mysql:mysql /var/lib/mysql Simple full backup and restore Preparing/Restoring 7. Prepare backup by applying recorded tlog changes 8. Restoring files to original location
  • 61. 61 - Internal Use Only - MySQL 백업 및 복구 일반적인 파일단위 백업 서비스와는 달리 이미지백업 (Volume Snapshots 방식) 이면서 분 단위까지 백업을 받고 필요 시 특정 백업 시점으로 복원 할 수 있는 백업 서비스로서 Continuous Data Protection Back-Up 이라는 의미 입니다. Continuous Data Protection Back-Up
  • 62. 62 - Internal Use Only - MySQL 백업 및 복구 저렴한 비용의 DR 구축 가장 기본적은 DR시스템 ( 실시간 백업 및 복원 ) 을 저렴한 비용으로 구축이 가능 합니다. OS, File, DB, Image. 동영상 등등을 지속적으로 백업하고 필요 시 특정 시점으로 복원 할 수 있습니다. 최소 분 단위의 백업 작업 가능 CDP백업은 최대 분 단위 까지 지속적인 백업을 할 수 있습니다. ( 1일 150회 이상 ) 중복백업을 하지 않는 알고리즘 CDP백업은 분 단위까지 백업 작업을 수행 하지만 중복백업을 하지 않아 백업 저장공간을 최소화 할 수 있습니다. 복원 시 최대 문제발생 15분 전의 상태로 복구 가능 CDP백업은 일반 백업서버와 같이 문제발생시 하루 전으로 복원 하는 것이 아니라, 문제발생 15분 전 상태로 복구가 가능하여 Data Loss를 최소화 할 수 있습니다. 서버에 부담을 주지 않는 백업 서비스 CDP백업은 최초 백업을 제외 하고는 백업동작 시 서버에 부하를 주지 않는 특허 받은 알고리즘을 통해 최적의 백업 환경을 제공 합니다. 서버가 가장 바쁜 시간대에도 백업이 가능 합니다. CDP Backup 의 특징
  • 63. 63 - Internal Use Only - MySQL 백업 및 복구 CDP Backup 의 장점
  • 64. 64 - Internal Use Only - MySQL 백업 및 복구 항목 / 구분 수동백업 이미지백업 CDP백업 백업을 위한 통합 콘솔 제공 No Yes Yes 스케줄 백업 지원 No Yes Yes 증분 백업 지원 No Yes Yes 백업 작업 시 시스템 부하 여부 심함 심함 거의없음 백업시점 및 복원시점 자동 관리 No No Yes 네트워크 백업 전문성 No No Yes Bare Metal Restore ( OS백업 및 복구 ) No Yes Yes 백업 주기 관리 일 일,시간 일,시간,분 CDP 백업 방식 비교
  • 65. 65 - Internal Use Only - MySQL 백업 및 복구 CDP 백업 지원 가능 시스템 (for Agent) CPU Minimum: Pentium3 Recommended: Pentium4 Physical Memory Minimum: 512 MB Recommended: 1 GB NTFS 512 byte - 32KB cluster sizes Free Disk Space Disks and Volumes should be No More than 85% full to leave room for copy-on-write Volume Shadow Copy Service snapshot operations. Supported File Systems ext2, ext3, ext4 (CDP 2.20+), reiserfs, Linux Swap 32-Bit Windows Windows XP SP2+, Windows Server 2003 SP2+, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 64-Bit Windows Windows XP SP2+, Windows Server 2003 SP2+, Windows Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7 32-Bit Linux Most 2.4 & 2.6 Linux Kernels. See Supported Linux Distributions. 64-Bit Linux Most 2.4 & 2.6 Linux Kernels. See Supported Linux Distributions. OS 별
  • 66. 66 - Internal Use Only - MySQL 백업 및 복구 기존의 백업 솔루션과 달리 백업 용량이 최소화 됨. 백업 및 복원 시점을 최소 분 단위 까지 관리 가능. 시스템 부하가 거의 없어 서버의 서비스 성능을 유지 할 수 있음. OS 및 Data, DB 까지 포함한 백업. 저렴한 비용으로 DR 구축 가능 CDP 백업 도입 효과 MySQL 실시간 백업 문제발생시 특정 테이블만 복원 가능. MySQL 무중단 백업 ! Transaction 무 손실 ! CDP백업- MySQL Special 백업
  • 67. 67 - Internal Use Only - MySQL 백업 및 복구 CDP 백업 서비스 구성도 CDP은 다음과 같은 고객님께 권장 합니다. 서버의 OS 및 파일에 대하여 백업이 필요한 경우. 매우 중요한 Data를 운용 하는 경우. DB를 운영하여 문제 발생시 Data Loss를 최소화 하여야 하는 경우. 만약에 발생할 수 있는 실수로 인한 Data 유실 시 빠른 복원이 필요한 경우.
  • 69. 69 - Internal Use Only - ……. MySQL Upgrade Upgrade utility mysql_upgrade는 mysql 에서 기본 제공되는 유틸리티입니다
  • 70. 70 - Internal Use Only - MySQL Upgrade Upgrade utility prompt> mysql_upgrade --help …
  • 71. 71 - Internal Use Only - MySQL Upgrade Upgrade utility prompt> mysql_upgrade -u user -p password --datadir=/user data directory... MySQL System table User define table`s
  • 72. 72 - Internal Use Only - MySQL Upgrade Upgrade utility prompt> mysql_check --check-upgrade --all-database --auto-repair 각 테이블들에 대한 체크
  • 73. 73 - Internal Use Only - OPEN SHARE CONTRIBUTE ADOPT REUSE