Amazon Aurora의 파라미터 그룹은 데이터베이스 인스턴스의 동작 방식을 제어하는 설정 집합이다. 이 설정을 통해 데이터베이스 성능, 보안, 로그 및 기타 다양한 기능을 세밀하게 조정할 수 있다. Aurora는 기본 파라미터 그룹을 제공하며, 사용자는 이를 복사하여 사용자 정의 파라미터 그룹을 생성하고 필요에 맞게 설정을 변경할 수 있다.
파라미터 그룹을 설정하는 첫 번째 단계는 파라미터 그룹을 생성하는 것이다. AWS Management Console, AWS CLI, 또는 AWS SDK를 통해 파라미터 그룹을 생성할 수 있다. 파라미터 그룹을 생성할 때는 데이터베이스 엔진 유형과 버전을 지정해야 하며, 이는 해당 엔진과 버전에 맞는 설정이 적용되도록 하기 위함이다. 예를 들어, Aurora MySQL과 Aurora PostgreSQL은 각각 다른 파라미터 그룹을 사용하며, 엔진 버전에 따라 사용할 수 있는 파라미터가 다를 수 있다.
파라미터 그룹이 생성되면, 사용자는 해당 그룹의 파라미터 값을 수정할 수 있다. AWS Management Console에서 파라미터 그룹을 선택하고, 각 파라미터의 현재 값을 확인한 후 필요한 값을 변경할 수 있다.
주요 파라미터
innodb_buffer_pool_size
innodb_buffer_pool_size는 InnoDB 스토리지 엔진의 버퍼 풀 크기를 설정하는 파라미터로, 데이터와 인덱스를 메모리에 캐싱하여 디스크 I/O를 줄이고 성능을 향상시킨다. 메모리 용량이 큰 서버에서는 이 값을 크게 설정하여 더 많은 데이터를 메모리에 유지함으로써 데이터베이스 성능을 극대화할 수 있다.max_connections
max_connections는 데이터베이스에 동시에 연결할 수 있는 최대 연결 수를 설정하는 파라미터로, 애플리케이션의 요구에 따라 이 값을 조정할 수 있다. 웹 애플리케이션과 같이 많은 사용자가 동시에 접속하는 환경에서는 이 값을 높여 더 많은 연결을 허용하도록 설정해야 한다.query_cache_size
query_cache_size는 MySQL에서 쿼리 캐시의 크기를 설정하는 파라미터로, 자주 실행되는 SELECT 쿼리의 결과를 캐싱하여 쿼리 성능을 향상시킨다. 그러나 Aurora MySQL 5.7 이상 버전에서는 쿼리 캐시가 제거되었으므로, 그 이하 버전을 사용하는 경우에만 이 파라미터를 조정할 수 있다.innodb_log_file_size
innodb_log_file_size는 InnoDB 로그 파일의 크기를 설정하는 파라미터로, 로그 파일이 크면 크래시 복구 시 시간이 단축되고, 트랜잭션 처리 성능이 향상된다. 그러나 너무 크게 설정하면 디스크 사용량이 증가할 수 있으므로 적절한 크기로 조정해야 한다.innodb_flush_log_at_trx_commit
innodb_flush_log_at_trx_commit은 트랜잭션이 커밋될 때 로그를 디스크에 기록하는 방식을 제어하는 파라미터로, 값에 따라 데이터 안정성과 성능 간의 균형을 맞출 수 있다. 기본값인 1은 각 트랜잭션마다 로그를 디스크에 기록하여 높은 데이터 안정성을 보장하지만, 성능이 저하될 수 있다. 값이 2 또는 0으로 설정하면 성능이 향상되지만, 데이터 손실 위험이 커진다.innodb_io_capacity
innodb_io_capacity는 InnoDB의 백그라운드 작업(예: 버퍼 풀의 페이지 플러시, 로그 파일 기록 등)을 위한 I/O 용량을 설정하는 파라미터로, 디스크 I/O 성능에 맞춰 적절히 설정해야 한다. SSD와 같은 고성능 디스크를 사용하는 경우 이 값을 높여 백그라운드 작업을 더 빠르게 수행할 수 있다.innodb_thread_concurrency
innodb_thread_concurrency는 InnoDB에서 동시에 실행할 수 있는 스레드 수를 제한하는 파라미터로, 스레드 경합을 줄이고 성능을 향상시킬 수 있다. 일반적으로 CPU 코어 수에 맞춰 이 값을 조정하면 성능을 최적화할 수 있다.autocommit
autocommit은 각 SQL 문이 자동으로 커밋될지 여부를 결정하는 파라미터로, 애플리케이션의 트랜잭션 관리 전략에 따라 이 값을 설정할 수 있다. 자동 커밋을 비활성화하면 트랜잭션 단위로 커밋할 수 있어 데이터 일관성을 유지할 수 있다.log_bin_trust_function_creators
log_bin_trust_function_creators는 사용자 정의 함수(UDF)와 저장 프로시저를 생성할 때 필요로 하는 특권을 설정하는 파라미터로, 트리거 및 이벤트를 사용하는 애플리케이션에서 유용하다. 이 값을 1로 설정하면 UDF 및 저장 프로시저를 더 쉽게 생성할 수 있다.slow_query_log
slow_query_log는 느린 쿼리를 로그에 기록하는 기능을 활성화하는 파라미터로, 성능 문제를 진단하고 최적화할 때 유용하다. 느린 쿼리 로그를 통해 성능이 저하되는 쿼리를 식별하고, 인덱스 최적화나 쿼리 구조 개선 등의 조치를 취할 수 있다.
Cluster Parameter Group vs Instance Parameter Group
클러스터 파라미터 그룹은 Aurora 데이터베이스 클러스터 전체에 적용되는 설정을 포함하고 있다. 하나의 클러스터에는 다수의 데이터베이스 인스턴스가 있을 수 있으며, 클러스터 파라미터 그룹은 이 모든 인스턴스에 공통적으로 적용되는 파라미터를 정의한다. 예를 들어, 클러스터 파라미터 그룹을 통해 클러스터 전체의 로그 파일 크기나 복제 설정을 관리할 수 있다. 이러한 설정은 클러스터 내 모든 인스턴스에 동일하게 적용되기 때문에, 클러스터 파라미터 그룹을 올바르게 설정하는 것은 매우 중요하다.
인스턴스 파라미터 그룹은 개별 DB 인스턴스에 적용되는 설정을 정의한다. 각 인스턴스는 독립적으로 구성될 수 있으며, 특정 인스턴스에 대해 별도의 설정을 적용하고자 할 때 인스턴스 파라미터 그룹을 사용한다. 예를 들어, 특정 인스턴스의 메모리 할당량이나 캐시 크기를 조정하고자 할 때 인스턴스 파라미터 그룹을 사용하면 된다. 이는 클러스터 내의 인스턴스가 서로 다른 작업 부하를 처리하거나, 다른 성능 요구 사항을 가질 때 유용하다.
이 두 가지 파라미터 그룹의 차이를 이해하는 것은 매우 중요하다. 클러스터 파라미터 그룹은 클러스터 전체의 일관성을 유지하고, 공통적인 설정을 쉽게 관리할 수 있도록 도와준다. 클러스터 파라미터 그룹을 변경하면 클러스터 내 모든 인스턴스에 즉시 영향을 미치기 때문에, 이러한 변경 사항은 신중하게 관리되어야 한다. 반면에, 인스턴스 파라미터 그룹은 개별 인스턴스의 특수한 요구 사항을 충족시키기 위해 사용된다. 이는 특히 대규모 클러스터에서 특정 인스턴스에 대해 최적화된 설정을 적용할 때 매우 유용하다.