Chapter 6 데이터베이스 운용
6-1 온프레미스, 클라우드
1. 자체 설비인가, 외부 시스템을 이용하는가?
- 온프레미스(On-premise)
- 자체 설비를 이용하여 데이터베이스를 운용하는 방법
- 서버나 회선을 사내에서 조달하여 시스템을 구축한다.
- 클라우드(Cloud)
- 인터넷을 통하여 사업자가 제공하고 있는 데이터베이스를 사용하는 것
- 자체적으로 설비를 떠안을 필요가 없고, 외부 사업자에 의해 미리 준비되어 있는 시스템을 이용한다.
2. 비용과 보안 측면의 차이
| 온 프레미스 | 클라우드 |
---|
비용 | 설비 금액이나 전기료, 보수 비용이 들어가기 때문에, 높은 금액이 되기 쉽다. | 사업자에 따라 다르지만, 보다 저렴할 수 있다. |
도입+운용 걸리는 수고 | 모두 내부에서 수행 | 어느 정도는 사업자에 맡김 |
보안 | 내부에서만 사용하는 경우 외부와의 접속이 없는 만큼 안전 | 온라인 상에 있는 만큼 위험도는 올라간다 |
커스터마이즈 자유도 | 요구에 맞게 자유롭게 커스터마이즈 할 수 있다 | 사업자에 의해 준비되어 있는 플랜(plan)만 |
6-2 전원, 바이러스, 비용
- 자체적으로 데이터베이스 서버를 관리할 때의 주의점
1. 온프레미스에서 주의해야 하는 것
1) 정전에 대비한다.
- 무정전 전원장치(UPS)나 비상용 자가발전 장치 등을 검토해야 한다.
2) 외부로부터의 공격에 대비한다.
- 수시로 최신의 수정 프로그램이나 패치(patch)를 적용하거나 바이러스 소프트웨어의 도입을 검토해야 한다.
3) 비용을 견적하다
- ex) 서버, 소프트웨어, 라이선스의 구입 비용, 운용하는 기술자의 채용,
보안 대책 관련 비용이나 전기세, 기기가 고장나거나 낡았을 때의 교환 비용 등을 미리 정리
6-3 이니셜 코스트(initial cost), 러닝 코스트(running cost)
1. 초기 비용과 유지 비용
1) 이니셜 코스트 : 초기 비용으로 데이터베이스를 도입할 때 드는 비용
- 설비 구입 비용이나 상용 데이터베이스나 클라우드 서비스를 이용할 때 처음에 지불해야 하는 비용
2) 러닝 코스트 : 데이터베이스 도입 이후 매월 소요되는 비용
- 온프레미스(전기세), 상용 데이터베이스나 클라우드 서비스(사업자에게 매월 지불하는 이용료/유지보수에 드는 인건비 등)
2. 데이터베이스에 드는 여러 가지 비용 사례
1) 온 프레미스
- 이니셜 코스트 : 서버와 랙(rack) 등 설비 구입 비용
- 러닝 코스트 : 전기료 + 인건비 + 보안 및 장애 대책을 위한 비용
2) 클라우드 서비스
- 초기 비용 + 매월 고정된 이용료 + 사용한 만큼 과금되는 종량제 과금 방식
3) 상용 데이터베이스를 사용하는 경우
- 라이선스 비용, 데이터베이스의 규모나 사용자 수, 옵션에 따라 가격이나 청구 시기는 다양하다.
6-4 사용자, 권한
1. 사용자와 권한을 설정한다
-
사용자
를 생성하고, 그 사용자가 데이터베이스에 대해 어떠한 조작을 할 수 있게 할 것인가 권한
을 부여할 수 있다.
-
권한 : 데이터베이스의 생성, 삭제, 테이블의 생성/편집/삭제, 레코드의 추가/편집/삭제 이외에 데이터베이스 전체에 관련된 시스템 조작 권한 등
권한 : 데이터베이스별, 테이블별, 컬럼별 등 범위 지정 가능
6-5 조작 이력, 로그(log), 리소스
1. 데이터베이스를 감시하다
2. 다양한 감시 대상 항목
1) 데이터베이스 조작 이력
- 데이터베이스 관리자가 언제 어떤 조작을 했는지 기록해 둔다.
2) 쿼리 로그(Query Log)
- 데이터베이스에서 수행된 SQL의 이력 로그를 남겨둠으로써 장애 대응 등에 이용할 수 있다.
- DBMS에 의해 실행하는데 시간이 걸리는 SQL을 출력하는 슬로우 로그(slow log)와 발생한 오류를 출력하는 에러 로그(error log)등이 있다.
3) 서버 자원
- CPU나 메모리, 네트워크 대역, 디스크의 빈 용량 등 자원에 이상이 없는지 체크해 둔다.
6-6 백업, 풀 백업, 차분 백업, 증분 백업
1. 데이터 파손에 대비하여 백업한다
-
조작하는 로직에 존재하는 버그(bug)로 인해 데이터에 모순이 생기거나, 조작 실수로 데이터가 사라져 버리는 경우가 있다.
-
데이터를 복제해 두는 것을 백업이라 하며, 데이터가 파손되어도 백업 파일에서 데이터를 복구할 수 있다.
⭐2. 백업 방식 분류
1) 풀 백업 (Full Backup)
- 모든 데이터를 백업 받는 방법
- 👍: 해당 시점의 데이터를 나중에 완전히 복구 가능
- 👎: 많은 양의 데이터를 조회하기 때문에 처리에 시간이 걸리거나 시스템에 과부하가 걸리기 때문에 많은 경우에는 적합하지 않다.
2) 차분 백업 (Differential Backup)
- 풀 백업 후
추가된 변경 부분을 백업하는 방법
- 데이터 복구 시에는 첫 번째 풀 백업과 최신 차분 백업의 두 가지 파일을 사용하여 복구
- 최초의 풀 백업 후에 추가된 데이터를 백업
- 👍: 변경된 부분만큼 백업 처리 시간이 짧아 시스템 부담이 적다.
3) 증분 백업(Incremental Backup)
- 풀 백업 후의 변경 분을 백업하는 방식
- 차분 백업과 비슷하지만
백업을 할 때는 이전에 백업한 이후에 변경 부분만 백업하는 방식
- 시스템에 부담을 주지 않지만 데이터 복구 시 지금까지의 모든 파일이 필요하기 때문에 하나라도 파일이 빠져 있으면 복구할 수 없다.
6-7 덤프(dump), 리스토어(restore)
1. 같은 내용의 데이터베이스를 생성한다
-
덤프(dump)
: 데이터베이스의 내용을 출력하는 것
-
덤프를 수행하면, 데이터베이스의 내용을 반영한 덤프 파일을 생성할 수 있다.
-
리스토어(restore)
: 덤프 파일에서 데이터를 복원하는 것
-
이 파일을 사용해서 다른 데이터베이스에 리스토어(restore)라는 작업을 실행함으로써, 덤프를 가져온 데이터베이스와 동일한 데이터베이스를 생성할 수 있다.
테스트 환경이나 개발 환경용으로 동일한 데이터베이스를 생성하거나,
- 오래된 데이터베이스에서 새로운 데이터베이스로 데이터를 이행하거나 백업으로 데이터를 취득해 둘 수 있다.
2. 덤프 파일 내용물
- CREATE TABLE 이나 레코드를 생성하는 INSERT INTO 와 같은 명령어를 실행하면 덤프를 조회한 데이터베이스 내용과 동일한 데이터베이스를 만들 수 있다.
3. 덤프를 실시하는 명령어
- myslqump
- (PostgreSQL) : pg_dump 등
- 데이터가 많은 경우 실행이 지연될 수 있다.
6-8 암호화, 복호화
1. 정보 유출을 막는 암호화
- 암호화 : 데이터를 다른 사람이 읽을 수 없는 정보로 변환하는 기술
- 복호화 : 암호화된 데이터는 특별한 처리를 통해 원래대로 되돌림
2. 다양한 암호화 방식
1) 애플리케이션에서 암호화
- 데이터를 저장하기 전 애플리케이션으로 암호화 후 저장하는 방법
- 데이터베이스에는 암호화된 상태로 데이터가 저장
- 데이터를 조회한 경우에도 암호화된 상태로 조회하게 되어 애플리케이션에서 복호화를 수행
2) 데이터베이스 기능에 의한 암호화
- 관리 시스템에서 데이터를 저장/조회 시 암호화나 복호화 처리를 실시
- 애플리케이션에서는 암호화 여부를 의식할 필요가 없어서 편리
3) 스토리지 기능을 통한 암호화
- 데이터를 저장하고 있는 스토리지 기기나 OS의 기능을 사용하는 방법
- 스토리지에 데이터를 저장할 때 자동적으로 암호화된다.
6-9 버전 업(Version up)
1. 버전을 올려야 하는 필요성
- 보안 강화나 성능 향상이 예상되기 때문에 DBMS와 OS 버전 업에 유의한다.
😈 OS나 소프트웨어를 갱신하지 않고 오래된 이전 버전 상태로 두면,
- 최신 기능을 사용할 수 없으며,
- 다른 소프트웨어와 연계를 할 수 없게 되거나,
- 충분한 지원을 받지 못해서 트러블이 발생했을 때 대처가 어려워진다.
2. 버전 업(Version up)의 흐름
- 현재 버전 및 설정 등의 환경을 기록해 둔다.
▼
- 데이터 백업을 한다.
- 1,2🎈
만약 문제가 발생했을 떄를 위해 원래대로 되돌릴 수 있도록 해야 한다.
▼
3. OS나 소프트웨어 버전 업을 실행
▼
4. 정상적으로 동작하고 있는지 테스트
4.🎈
- 실행하고 있는 SQL에 에러가 나지는 않았는가?
- SQL 처리에 시간이 걸리지는 않았는가?
- 로그나 서버의 리소스에 문제가 생기지는 않았는가?