데이터베이스 백업

전체 데이터베이스 백업

 mysqldump -u아이디 -p --all-databases > 덤프파일명.sql

 특정 데이터베이스 백업

 mysqldump -u아이디 -p --databases DB명 > 덤프파일명.sql

 특정 테이블 백업(데이터포함)

 mysqldump -u아이디 -p DB명 테이블명 > 덤프파일명.sql

 스키마만 백업

 mysqldump -u아이디 -p --no-data...

 데이터만 백업

 mysqldump -u아이디 -p --no-create-info...


데이터베이스 복원

mysql -u아이디 -p < 파일명

 DB전체

 mysql -u아이디 -p DB명 < 파일명

 특정 DB 

 mysql -u아이디 -p DB명 테이블명 < 파일명

 특정 TABLE 


데이터베이스 로그

-에러로그

: MySQL 구동과 모니터링, Query 에러에 관련된 메세지

- 일반로그

: 전체쿼리에 대해 General log를 활성화 시켜 저장가능

- 슬로우 쿼리 로그

: long_query_time에 설정된 시간 이상을 소요한 쿼리를 기록

- 이진로그/릴레이 로그



* 데이터베이스 파티셔닝

* VLDB(Very Large DBMS)

: 전체 DB가 하나의 DBMS시스템에 다 들어가기 힘든경우

: 테이블들을 여러 군으로 나눠 분산저장한다

: 하나의 테이블을 사전방식으로 나누어 저장한다

* 파티셔닝

: DBMS 레벨 분할

* 샤딩(Sharding)

: DBMS 외부에서 분할/응용레벨에서 구별해야함.

* 제약사항

* 테이블 단위 연산이 힘들어짐(비용문제)

: 조인연산 어려움 -> 정규화 문제

: 역정규화 -> 중복허용으로 해결

* 외래키의 효용문제

: 레코드 추가시 참조무결성 조건 체크 -> 시스템 부담증가로 수동전환

: CRUD시 위치를 인식해야함.(파티셔닝/샤딩이 다름)

* 파티셔닝

*이점

: 부분탐색으로 인한 성능 증가

: 전체 데이터 손실 가능성이 줄어듬

: 파티션 별 백업/복구 가능

: 파티션 단위로 I/O분산가능 WRITE성능 증가<-- 가장 중요

* 방식

: 범위 기반 - a-m/n-r/s-z 혹은 날짜 기준

: 각 파티션별로 양이 다를 수 있는 문제가 있음

: 해시 - 해시함수 파티션별로 크기를 비슷하게 나눔

: 리스트 - 특정 칼럼 기준

: 컴포지트(섞은거) - range-hash/range-list

* MySQL 파티셔닝

: 5.x 지원

: 최대 1024개

: 모든 파티션은 동일한 스토리지 엔진을 사용해야함

: 외래키/Full text 인덱스 지원하지 않음

: 파티션 값은 정수

파티션 추가/삭제

ALTER TABLE 테이블명 ADD PARTITION( PARTITION p4 VALUES LESS THAN(정수) );

ALTER TABLE 테이블명 DROP PARTITION p4


파티션 분할/병합

ALTER TABLE 테이블명
    REORGANIZE PARTITIOIN p3 INTO(
    PARTITION p3 VALUES LESS THAN(2015),
    PARTITION p4 VALUES LESS THAN MAXVALUE);

ALTER TABLE 테이블명
    REORGANIZE PARTITION p2,p3 INTO(
    PARTITION P23 VALUES LESS THAN (2014);


데이터 베이스 복제(Replication)

: DBMS의 내용을 복제하여 동일한 DB내용을 유지

: 두개 이상의 DBMS시스템을 마스터/슬레이브로 나누어 마스터 DBMS->슬레이브DBMS로 SQL 쿼리 복제(SELECT 제외)

: 데이터 업데이트(CUD)는 마스터에서

: 읽기(R)는 슬레이브에서 함.

: 읽기 성능 향상

: 웹서버 시스템 성능확장에 적합

* 로그기반 복제

: Statement Based

: SQL문장을 복제하는 경우, 결과가 달라질수있음(시간,UUID...)

: Row Based

: SQL문장에 따라 변경된 내용만 기록함. 데이터가 많이 변경되면 데이터가 커짐

: Mixed

: 두방식을 혼합한것

: MySQL 서버가 두대 필요하다

'프로그래밍 > RDBMS - MySQL' 카테고리의 다른 글

Bulk Insert  (0) 2017.03.29
Full Text Search  (0) 2017.03.29
META DATA  (0) 2017.03.29
INDEX  (0) 2017.03.28
DCL(Data Control Language) 명령어  (0) 2017.03.27

+ Recent posts