forked from JAVACAFE-STUDY/2024-real-mysql-1
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
106 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# MySQL 서버의 데이터 암호화 | ||
|
||
MySQL 서버 (InnoDB 스토리지 엔진)의 I/O 레이어에서만 데이터 암호화 및 복호화 실행 | ||
|
||
TDE(Transparent Data Encryption) = Data at Rest Encryption : 암호화 및 복호화를 디스크에 저장된 단계에서만 암호화 된다 | ||
|
||
### 2단계 키 관리 | ||
|
||
테이블스페이스 키 = 프라이빗 키 | ||
마스터 키 = 외부 키 관리 솔루션이나 디스크 파일 | ||
마스터 키는 외부 노출될 가능성이 있어 주기적으로 변경해야 함 | ||
|
||
### 암호화와 성능 | ||
|
||
디스크로부터 한 번 읽은 데이터 페이지는 복호화되어 InnoDB 버퍼 풀에 저장됨 | ||
같은 테이블에 대해 암호화와 압축이 동시에 적용되면 압축 먼저 적용하고 암호화 실행 | ||
|
||
### 암호화와 복제 | ||
|
||
소스 서버와 레플리카 서버는 서로 각자의 마스터 키, 테이블스페이스 키를 관리하여 복제된 데이터 파일이 암호화되는 값은 다름 | ||
|
||
# keyring_file 플러그인 설치 | ||
|
||
커뮤니티 에디션에서만 가능 | ||
마스터키를 디스크 파일에 평문으로 저장됨. 보안 위험 있음 | ||
|
||
# 테이블 암호화 | ||
|
||
### 테이블 생성 | ||
|
||
```sql | ||
CREATE TABLE t1 (id INT, data VARCHAR(100)) ENCRYPTION='Y'; | ||
``` | ||
|
||
### 응용 프로그램 암호화와의 비교 | ||
|
||
MySQL 서버 암호화가 더 나음: 응용 프로그램의 암호화는 평문 내용으로 확인하기 어려움 | ||
|
||
### 태이블스페이스 이동 | ||
|
||
암호화된 테이블을 다른 테이블스페이스로 이동하면 암호화 키도 함께 이동됨 | ||
|
||
```sql | ||
FLUSH TABLES t1 FOR EXPORT; | ||
``` | ||
|
||
# 언두 로그 및 리두 로그 암호화 | ||
|
||
테이블스페이스 키로 암호화 되고 테이블스페이스 키는 다시 마스터 키로 암호화 됨 | ||
테이블스페이스 키 = 리두 로그와 언두로그 파일을 위한 프라이빗 키 | ||
|
||
각각 프라이빗 키 발급, 해당 키는 암호화 되어 각 파일의 헤더로 저장 | ||
|
||
# 바이너리 로그 암호화 | ||
|
||
증분 백업을 위해 보관하기도 함 | ||
|
||
### 바이너리 로그 암호화 키 관리 | ||
|
||
파일키 : 바이너리 로그 암호화 키 로 암호화, 테이블 암호화 마스커 키와 동일 | ||
|
||
### 바이너리 로그 암호화 키 변경 | ||
|
||
바이너리 로그 암호화 키 변경 시, 새로운 키로 바이너리 로그 파일을 재생성해야 함 | ||
|
||
### mysqlbinlog 도구 활용 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# 디스크 읽기 방식 | ||
|
||
### 하드 디스크 드라이브(HDD) 와 솔리드 스테이트 드라이브(SSD) 의 차이점 | ||
|
||
데이터 베이스 서버에서 순차 I/O는 비중이 크기 않음 | ||
랜덤 I/O로 작은 데이터 읽고 쓰기 작업이 대부분임 | ||
|
||
따라서 SSD 의 장점이 잘 드러남 | ||
|
||
### 랜덤 I/O와 순차 I/O | ||
|
||
디스크 성능: 얼마나 많은 데이터를 한 번에 기록하느냐에 따라 결정 | ||
여러 번 쓰기 또는 읽기 요청하는 랜덤 I/O는 성능 저하를 가져옴 | ||
|
||
# 인덱스란? | ||
|
||
인덱스 크기가 비대해지면 역효과를 불러옴 | ||
|
||
- 프라이머리 키 | ||
- 보조키 (세컨더리 인덱스) | ||
|
||
# B-Tree 인덱스 | ||
|
||
### 구조 및 특성 | ||
|
||
### B-Tree 인덱스의 키 추가 및 삭제 | ||
|
||
#### 인덱스 키 검색 | ||
|
||
### B-Tree 인덱스 사용에 영향을 미치는 요소 | ||
|
||
#### | ||
|
||
### B-Tree 인덱스를 통한 데이터 읽기 | ||
|
||
### 다중 칼럼(Multi-Column) 인덱스 | ||
|
||
### B-Tree 인덱스의 정렬 및 스캔 방향 | ||
|
||
### B-Tree 인덱스의 가용성과 효율성 |