안녕하세요. Administartor팀입니다.
이번 포스트에서는 지난 DB Parameter Group에 이어서, Cluster Parameter Group과 Instance Parameter Group의 우선순위에 대해 알아보도록 하겠습니다.
DB Cluster parameter group 과 DB Instance parameter group 중 우선순위
서론
DB Cluster Parameter group 과 Instance parameter group의 변수를 보면 max_connections 과 같이 동일한 변수들을 확인할 수 있습니다.
이런 경우, 순서에 따라 적용되는지 혹은 어떤 값의 우선순위가 높은지 의문이 들 수 있습니다.
결론적으로, **instance parameter group**의 설정 값이 DB Cluster parameter group 값보다 우선순위가 높습니다.
아래 테스트를 통해 증명해보고자 합니다.
Test
Test 1
클러스터에 설정/적용할 값을 선택할 때 Aurora가 어떤 우선 순위를 따르는지 알고 싶습니다.
첫 번째 테스트는 Cluster parameter group 의 값만 변경하고, Instance parameter group은 기본 값을 유지할 때에 관한 테스트입니다.
다음은 수행한 테스트의 예와 각 테스트의 결과입니다.
- 클러스터 파라미터 그룹 내에서 파라미터 값을 수정하지만 DB 파라미터 그룹값이 기본값인 경우 클러스터 파라미터 그룹의 변경된 파라미터 값이 클러스터에 우선합니다.
- DB 클러스터 파라미터 그룹에서 max_connections = 70 으로 설정했습니다.
- DB 파라미터 그룹에서 max_connections를 수정하지 않았습니다(기본값으로 두었습니다).
- 클러스터에서 어떤 매개변수를 사용하고 있는지 확인하기 위해 “show variables like “‘max_connections’;”를 실행했습니다.
사전 설정
- Aurora 생성
- name : hanna-pm-test
- 엔진 : Aurora MySQL
- Cluster parameter group과 DB parameter group 모두 기본(default)으로 생성 됨.
Cluster parameter group 확인하기
DB parameter group 확인하기
Test.1
- default 값으로 설정되어 있는 max_connections 값 확인
- DB Instance 접속 bastion host에서 Aurora writer 인스턴스에 접속하였다.
mysql -h hanna-parameter-aurora-instance-1.cslhbb9jqvu2.ap-northeast-2.rds.amazonaws.com -u admin -P 3306 -p - 콘솔에서 확인하기
- DB Instance 접속 bastion host에서 Aurora writer 인스턴스에 접속하였다.
기본값으로 설정되어 있다
2. 명령어를 통해 ‘max_connections’ 값 확인하기
MySQL [(none)]> show variables like ‘max_connections’;
+—————–+——-+
| Variable_name | Value |
+—————–+——-+
| max_connections | 45 |
+—————–+——-+
1 row in set (0.00 sec)
!! 참고
db.t3.small 의 기본 max_connections 값은 45입니다. 정상적으로 적용되어 있는 것을 확인할 수 있습니다.
3. Cluster parameter group을 생성 후 적용 기본 파라미터 그룹은 수정할 수 없으므로 사용자 지정 파라미터 그룹을 생성하고 파라미터를 변경한 다음 새 파라미터 그룹을 사용하도록 인스턴스를 수정해야 합니다.
만약 max_connection 값을 수정하기 위해 기본 파라미터 그룹에서 값을 수정하면 아래와 같은 에러가 발생합니다.
cluster parameter group 생성
- max_connection 값 수정
값을 45 → 70 으로 변경하였다.- aurora에 적용
- 인스턴스에서 확인
MySQL [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value | +
-----------------+-------+
| max_connections | 45 | +
-----------------+-------+
1 row in set (0.00 sec)
이론상으로라면, 변경이 되어야 하는데, 변경되지 않았습니다.변경되지 않은 이유? 파라미터 그룹을 변경하신 뒤에는 반드시 수동으로 DB 인스턴스를 재시작 해주어야 새로운 파라미터 그룹이 적용됩니다.
e. 인스턴스 재부팅 후 조회
MySQL [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value | +
-----------------+-------+
| max_connections | 70 | +
-----------------+-------+
1 row in set (0.00 sec)
70 으로 정상적으로 변경 된 것을 확인할 수 있습니다.
Test.1 결론
- Cluster Parameter Group 의 값을 변경하여 적용하면, Instance Pararmeter Group 의 default 값 보다 우선순위가 높다.
- 새로운 Parameter group 을 적용하려면, DB 인스턴스를 수동으로 재부팅 해주어야 한다.
Test. 2
두번째 테스트는 Cluster parameter group 의 값을 기본 값으로 변경한 후, Instance parameter group의 값을 변경했을 시의 테스트입니다.
다음은 수행한 테스트의 예와 각 테스트의 결과입니다.
- 클러스터 파라미터 그룹을 기본 값으로 변경합니다. (다시 max_connections 값을 45로 변경)
- 이 후, DB 파라미터 그룹을 생성하여 max_connections 값을 80 으로 변경했습니다
- 클러스터 파라미터 그룹 내에서 이 파라미터 값을 기본값으로 유지하는 경우 DB 파라미터 그룹의 사용자 정의 설정 파라미터 값이 클러스터에 우선합니다.
Test.2
- 클러스터 파라미터 그룹을 기본 값으로 변경
- db instance parameter group 생성 후 적용
- 인스턴스 파라미터 그룹 생성
- name : hanna-instance-pg
- 그룹 이름 : DB Parameter Group
3. 인스턴스에 적용
4. 재부팅 후 mysql 에서 확인
MySQL [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 80 |
+-----------------+-------+
1 row in set (0.00 sec)
DB Parameter group 의 값인 80 으로 변경된 것을 확인하였다.
Test.2 결론
- Cluster Parameter Group 과 DB Instance Group 모두 기본 파라미터 그룹(default) 보다 변경한 사용자 지정 파라미터 그룹의 값이 우선적으로 적용된다.
Test.3
세 번째 테스트는 Cluster parameter group 의 값을 70 으로 변경한 후, Instance parameter group의 값 역시 변경했을 때의 테스트입니다.
다음은 수행한 테스트의 예와 각 테스트의 결과입니다.
- DB 클러스터 파라미터 그룹에서 max_connections = 70(다시)으로 설정했습니다.
- DB 파라미터 그룹을 사용하여 max_connections 값을 80 으로 변경했습니다
- 클러스터 파라미터 그룹 내에서 이 파라미터 값을 기본값으로 유지하는 경우 DB 파라미터 그룹의 사용자 정의 설정 파라미터 값이 클러스터에 우선합니다.
Test.3
- Cluster Parameter Group으로 적용 후 다시 cluster parameter의 max_connections 값을 변경함 -> 90 으로 설정
- mysql 에서 확인
MySQL [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 80 |
+-----------------+-------+
1 row in set (0.00 sec)
Cluster Parameter Group의 값을 90으로 설정해주고 적용하였으나, cluster parameter 값이 반영되지 않음. DB Parameter Group의 값이 적용된 것을 보아, DB Parameter Group의 값이 더 우선순위가 높은 것을 확인할 수 있음. - DB instance parameter 값을 변경 DB Parameter Group 의 값을 80 → 100 으로 변경
- 재부팅 후, mysql 에서 확인
MySQL [(none)]> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 100 | +
-----------------+-------+
1 row in set (0.00 sec)
Cluster parameter Group의 값이 아닌, DB Parameter Group 의 변경된 값이 정상적으로 적용한 것을 확인할 수 있음.
Test.3 결론
- Cluster Parameter Group 과 DB Parameter Group 둘 다 기본 그룹이 아니라 사용자 지정 파라미터 그룹을 사용한다면, DB Parameter Group의 값이 우선적으로 적용된다.
결론
“비서버리스 클러스터의 경우 DB 클러스터 파라미터 그룹에서 수정하는 모든 구성 값이 DB 파라미터 그룹의 기본값을 재정의합니다. DB 파라미터 그룹에서 해당 값을 편집하면 해당 값이 DB 클러스터 파라미터 그룹의 설정을 재정의합니다. 수정한 모든 DB 파라미터 설정이 DB 클러스터 파라미터 그룹 값보다 우선합니다. 수정하는 모든 DB 파라미터 설정은 구성 파라미터를 기본값으로 다시 변경하더라도 DB 클러스터 파라미터 그룹 값보다 우선합니다.”
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
AWS Lambda 란? (0) | 2022.09.16 |
---|---|
AWS session manager란? (0) | 2022.09.15 |
[AWS RDS] DB Cluster Parameter Group VS Instance Parameter Group (1) | 2022.09.13 |
[AWS] NLB (1) | 2022.09.11 |
[AWS]키페어 분실시 해결방법 (0) | 2022.09.08 |
댓글