DB & AWS Knowledge
RDS redo 및 transaction log 조절 관련 작업 본문
해당 페이지에서는 RDS 에서 사용되는 대표적인 DB engine 들에서 사용되는 redo 및 transaction log 조절 방법에 대해서 다룬다.
이 페이지는 아래의 이전 게시글 및 AWS 공식 Document 와 연관되어 있다.
[1] 2021.04.06 - [DB 관련 지식/DB 기본 개념] - 리두 로그 (Redo Log)
[2] https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_LogAccess.MySQL.LogFileSize.html
[3] https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Log.html
On-Premise 와 RDS 간의 redo 및 transaction log 조절 차이 이해
On-Premise 에서는 관리자가 모든 권한을 가진 유저이기에 (super user) 권한을 조절 시, DB crash 발생에 대비하여 사용되는 ( [1] 참조 ) redo 및 transaction log 에 대한 file 개수 및 size 조절 등을 자유롭게 할 수 있다. 그러나 RDS 에서는 관리자가 사용 할 수 있는 권한은 제한되어 있기에 이에 따라 이를 조절 할 수 있는 방법이 On-Premise 와 다르다.
RDS 내 각 DB engine 별 redo 및 transaction log 조절 방법
- Redo log 기반 DB (RDS MySQL, ORACLE)
RDS MySQL, ORACLE 은 DB crash 발생에 대비하여 redo log 기반으로 redo log file 을 사용한다.
이에 대한 조절 방법은 이와 같다.
-- RDS MySQL
[2] 와 같이 8.0.32 이하 버전에서는 On-Premise 와 같은 개념으로 128MB size 를 기본으로 설정된 redo log file 에서
innodb_log_file_size 파라미터를 조절하여 size 를 조절할 수 있었으나 현재 기준으로 innodb_log_files_in_group 값을 조절하여 file 개수를 조절 할 수는 없었다. (기본 값은 2개다)
그러나 RDS for MySQL 버전 8.0.33부터 innodb_redo_log_capacity 를 통하여 위의 개념이 통합 된 파라미터가 사용 된다.
즉, innodb_log_file_size * innodb_log_files_in_group = innodb_redo_log_capacity 의 개념을 이용하여 size 단위로 redo log size 를 조절 할 수 있게 설정 되었다.
-- RDS ORACLE
[3] 과 같이 RDS ORACLE 은 On-Premise 와 다르게 RDS 에서 제공하는 프로시저를 이용하여 redo log 관련 작업을 수행한다. Size 및 file 개수 조절은 On-Premise 와 같이 동일한 개념으로 적용 할 수 있다.
- Transaction log 기반 DB (RDS PostgreSQL, MSSQL)
RDS PostgreSQL, MSSQL 은 DB crash 발생에 대비하여 transaction log 기반으로 transaction log file 을 사용한다.
(PostgreSQL 은 WAL file 로 지칭) 이에 대한 조절 방법은 이와 같다.
-- RDS PostgreSQL
On-premise 에서는 DB 기동 시 (inidb), --wal-segsize 옵션등으로 WAL file 자체의 size 를 조절할 수 있고 (기본은 16 MB),
wal_keep_size 파라미터를 통하여 (PostgreSQL 13 이전에는 wal_keep_segments) 보관 가능한 WAL file 의 총 size 를 제한 할 수 있다. (즉, WAL file size * file 개수 = wal_keep_size)
그러나 RDS PostgreSQL 에서는 [4] 와 같이 wal_keep_size 만 조절 할 수 있다. 즉, WAL file size 를 조절 할 수 없다.
-- RDS MSSQL
일반적으로 On-premise MSSQL 에서는 특별한 변경이 없다면 최대 2TB 까지 Transaction log 를 보관 할 수 있고 이를 기반으로 max size 등을 자유롭게 조절 할 수 있다. 그러나 [5] 와 같이 RDS MSSQL 은 2TB 를 전부 다 사용 할 수 있다는 환경하에 이와 관련 된 변경 작업을 할 수 없기에 Transaction log size 를 크게 증가시키는 쿼리 또는 부하를 개선시켜야 한다. 또한 RDS MSSQL 은 [5] 와 같이 transaction log 가 계속 증가 될 수 있는 것을 이용하여 backup 수단으로 S3 bucket 에 log 들을 계속 보관 할 수 있다.
'AWS 및 클라우드 지식 > AWS RDS, Aurora 및 관련 지식' 카테고리의 다른 글
RDS MySQL, Aurora MySQL Cluster 의 버전 업그레이드 시 확인 해야할 사항 (0) | 2024.05.30 |
---|---|
AWS CloudFormation 을 통한 RDS instance 생성 예시 (0) | 2024.05.24 |
RDS, Aurora Cluster 내 OS patch 작업 유형 및 특징 (0) | 2024.02.23 |
RDS, Aurora PostgreSQL 에서 발생하는 CommitThroughput 과 SELECT 간의 관계 (0) | 2024.02.23 |
RDS, Aurora MySQL 의 binlog retention hours (0) | 2024.01.23 |