Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

RDS redo 및 transaction log 조절 관련 작업 본문

AWS 및 클라우드 지식/AWS RDS, Aurora 및 관련 지식

RDS redo 및 transaction log 조절 관련 작업

`O` 2024. 5. 13. 02:49
728x90
반응형

해당 페이지에서는 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

 

[4] https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_PostgreSQL.Replication.ReadReplicas.html

 

[5] https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER.SQLServer.AddlFeat.TransactionLogAccess.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 들을 계속 보관 할 수 있다.

 

반응형
Comments