백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.
1. 테이블 암호화
- 일반적인 테이블 생성 구문과 동일
암호화
- 테이블 생성 ENCRYPTION 옵션 추가하기
- default_table_encrtyption 시스템 변수 활성화하기
응용 프로그램 암호화
버퍼 풀에 데이터가 암호화되어 적재됨
- 인덱스를 사용할 수 없음
- 평문의 내용을 바로 확인할 수 없음
테이블스페이스 이동
- 테이블의 데이터 파일만 백업했다가 복구
Flush 명령어
FLUSH TABLES source_table FOR EXPORT;
- source_table 구조를 source_table.cfg에 저장
- source_table.ibd와 source_table.cfg를 목적지 서버로 복사
- UNLOCK TABLES 명령어를 수행하여 잠금 풀기
2. 언두 로그 및 리두 로그
- 기본적으로 평문으로 저장됨
암호화
- 각각의 테이블 스페이스 키로 암호화됨
- 테이블의 암호화에 사용된 테이블 스페이스키가 아니라 리두 로그와 언두 로그 파일을 위한 프라이빗 키를 의미함
시스템 변수
- innodb_undo_log_encrypt: 언두 로그 암호화
- innodb_redo_log_encrypt: 리두 로그 암호화
3. 바이너리 로그
- 기본적으로 평문으로 저장됨
- 디스크에 저장된 파일에 대한 암호화만 처리함
암호화 키 관리
파일 키
- 개별 로그 파일의 암호화를 위한 키
- 자동으로 생성됨
- 바이너리 로그 암호키로 암호화 된 후, 로그 파일의 헤더에 저장됨
바이너리 로그 암호화 키
- 테이블 암호화의 마스터 키와 동일한 역할
ALTER INSTANCE ROTATE BINLOG MASTER KEY;
- 바이너리 로그 암호화 키 변경
mysqlbinlog 도구 활용
- 암호화된 바이너리 로그를 평문으로 복호화할 일이 많이 생김 (트랜잭션 내용 추적, 백업 복구)
- 복호화 시, MySQL 서버가 가지고 있는 바이너리 로그 암호화 키가 필요함
- 원격으로 MySQL 서버에 요청하여 복호화된 파일을 보는 방법밖에 없음
mysqlbinlog --read-from-remote-server -u root -p -vvv mysql-bin.000011
'Database > Mysql' 카테고리의 다른 글
[Real MySQL] 9-2. 옵티마이저와 힌트: 고급 최적화 (0) | 2025.03.10 |
---|---|
[Real MySQL] 9-1. 옵티마이저와 힌트: 기본 데이터 처리 (0) | 2025.03.09 |
[Real MySQL] 7-1. 데이터 암호화: MySQL 서버 (1) | 2025.03.09 |
[Real MySQL] 6. 데이터 압축 (1) | 2025.03.08 |
[Real MySQL] 17-4. InnoDB 클러스터: 구축 (0) | 2024.09.07 |