Database/MySQL(13)
-
[MySQL] 백업 및 복구
1. 백업 및 복구 1) 백업 및 복구 MySQL은 mysqldump를 이용한 데이터베이스 로컬/원격 백업이 가능하다. // 로컬 백업 (DBMS 전체) mysql> mysqldump -uroot -p --all-databases > db.sql // 로컬 백업 (특정 데이터베이스) mysql> mysqldump -uroot -p --database bns > bns.sql // 원격 백업 mysql> mysqldump -h[DB서버 IP] -u[계정명] -p[비밀번호] 2) 백업 스크립트 백업 서버에서 주기적인 실행을 통해 특정 시스템의 정보의 백업을 수행해야 보안에 좋다. 주기적인 실행을 위해서는 crond 설정을 통해 가능하다. #/bin/bash DATE=`date %Y_%m_%d` mysqldu..
2020.10.01 -
[MySQL] 트리거, 이벤트 스케줄러
1. 트리거 (Trigger) 1) 트리거 테이블에 대한 특정 이벤트(INSERT, UPDATE, DELETE)에 반응해 자동으로 실행되는 작업이다. 트리거 실행 시점을 이벤트 전이나 후로 지정하여 설정이 가능하다. MySQL은 5.0.2버전부터 표준 트리거가 지원되며, 데이터 상태의 관리(데이터 작업 제한, 작업 기록, 변경 작업 감사 등)를 자동화하는데 사용한다. 제약사항으로는, 하나의 스키마에서 트리거의 이름은 중복될 수 없으며 동일한 활성화 시간 및 이벤트를 갖는 두 개의 트리거를 가질 수 없다. 2) 트리거 종류 종류 설명 행 트리거 테이블 안의 영향을 받은 레코드 각각에 대해 실행한다. 변경 전 또는 후의 레코드는 OLD, NEW라는 가상 줄 변수를 이용해 사용이 가능하다. 문장 트리거 INS..
2020.09.30 -
[MySQL] 저장 프로시저, 저장 함수
1. 저장 프로시저 (Stored Procedure) 1) 저장 프로시저 일련의 작업 절차를 정리해서 저장한 것이다. 여러 SQL문을 묶어서 미리 정의해 두고 하나의 요청으로 실행할 수 있다. 자주 사용되는 복잡한 작업들을 간단하게 실행할 수 있다. 애플리케이션에서 직접 모든 작업을 요청하지 않아도 되기 때문에 부하가 줄어들고 보안이 향상된다. 하지만 검증되지 않은 저장 프로시저를 실행하는 것은 위험하며 MySQL 5버전부터 사용이 가능하다. 2) 저장 프로시저 사용법 일반적으로 각 SQL문의 끝을 나타내기 위해 세미콜론을 입력해야한다. 하지만 그럴경우, 프로시저를 생성하는 동안에 명령이 끝나버리는 문제가 발생하기에 명령의 끝을 나타내는 구분문자를 임시로 변경하여 작성을 한다. 프로시저 작성이 끝난 뒤에..
2020.09.30 -
[MySQL] 인덱스, 변수
1. 인덱스 (Index) 1) 인덱스 테이블에 대한 동작의 속도를 높여주는 자료 구조이다. 인덱스는 테이블 내의 1개의 컬럼 혹은 여러개의 컬럼을 이용하여 생성한다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 일반 서적의 뒷부분에 구성 되어있는 찾아보기 같은 역할을 수행한다. PK와 UNIQUE 설정 시 자동으로 인덱스가 생성이 되며 INSERT, DELETE, UPDATE 속도를 약간 희생하고 SELECT 쿼리에 의한 검색 속도를 향상시킨다. 데이터의 양이 많고 검색이 변경보다 빈번한 경우에 사용한다. 하지만 인덱스를 저장하기 위해서는 별도의 저장공간이 필요하며 데이터를 추가하거나 수정하는데 더 많은 시간이 필요한 만큼 속도가 저하된다. 인덱스는..
2020.09.29 -
[MySQL] 뷰, 트랜잭션
1. 뷰 (View) 1) 뷰 하나 이상의 테이블에서 원하는 데이터를 선택하여 새로운 가상 테이블로 만들어주는 것이다. 다른 테이블에 있는 데이터를 보여줄 뿐이며 데이터 자체를 포함하고 있는 것은 아니다. (저장장치 내에 물리적으로 존재하지 않고 가상테이블로 만들어진다.) 데이터베이스의 구조를 변경하여도 테이블에 의존하는 어플리케이션을 변경할 필요가 없다. 복잡한 쿼리를 단순하게 만들 수 있어 편리하며 사용자에게 필요 없는 정보를 숨길 수 있다. 뷰를 사용하는 이유는 애플리케이션이 DBMS에 의존적인 경우에 DBMS 구조가 변경이 되어도 애플리케이션을 변경할 필요가 없으며 복잡한 쿼리를 단순하게 사용하고자 할 때 사용한다. 보안적인 관점에서는 애플리케이션에 테이블 내의 데이터를 노출하지 말아야 할 때나 ..
2020.09.29 -
[MySQL] 외래키, 조인, 집합 연산자, 서브 쿼리
1. 외래키 1) 외래키 관계형 데이터베이스에서 외래 키는 한 테이블의 필드 중 다른 테이블의 행을 식별할 수 있는 키이다. 2) 외래키 생성 및 옵션 mysql> CREATE TABLE [TABLE명] ( [COLUMN명] [데이터타입] [옵션] [제약조건], ... CONSTRAINT [제약설정명] FOREIGN KEY ([외래키명]) REFERENCES [참조TABLE] ([참조필드명]) ON DELETE [옵션] ON UPDATE [옵션] ) 옵션 설명 cascade 부모 데이터 삭제, 변경 시 자식 데이터도 동시에 적용된다. set null 부모 데이터 삭제 시 해당되는 자식 데이터의 컬럼을 NULL로 처리한다. set default 부모 데이터 삭제 시 자식 데이터의 컬럼은 기본 값으로 갱신한..
2020.09.29