Aamazon RDS for MySQL에서는 8.0.19 이상 버전부터 1 (이름은 소문자로 저장 되며 비교 시 대소문자 구분 안 함) 으로 설정이 지원 됩니다.
기본값은 0(대소문자를 구분) 입니다.
아래 링크에서 Amazon RDS DB 인스턴스에 대한 MySQL 파라미터 예외 에서 lower_case_table_names 항목을 참조 하시면 됩니다
Amazon RDS for MySQL에 대해 알려진 문제 및 제한 - Amazon Relational Database Service
Amazon RDS for MySQL 작업에 대해 알려진 문제 및 제한은 다음과 같습니다.
MySQL 5.6 이나 5.7과는 달리 MySQL 8.0 버전에서는 인스턴스 생성후에는lower_case_table_names 값을 변경 할 수 없습니다 (만약 변경해서 MySQL 시작하면 인스턴스 기동이 안됨)
그래서 lower_case_table_names기본값인 0으로 인스턴스 생성하였다면 MySQL 8.0 에서lower_case_table_names=1 로 변경 하기 위해서는 인스턴스를 재생성해야 합니다.
Amazon RDS for MySQL 8.0 도 동일하게 인스턴스 생성 후에는lower_case_table_names 를 변경할 수 없으며, 생성 시에 lower_case_table_names 을 1로 설정하고 인스턴스를 생성 하면 사용 할 수는 있습니다. (Aamazon RDS for MySQL 에서는 8.0.19 버전 이상 부터 가능)
Aurora MySQL 3 버전도 MySQL 8 버전과 호환을 가지는 RDS 서비스임으로 lower_case_table_names=1 으로 사용 하기 위해서는 아래와 동일 하게 사전에 파라미터 그룹 생성 등을 진행 해야 합니다.(Aurora MySQL 3 버전과 관련된 내용은 아래 포스팅 참조)
Amazon Aurora - MySQL 8.0 지원 - Amazon Aurora supports MySQL 8.0 - Amazon Aurora MySQL 3
안녕하세요 이번 포스팅에서는 MySQL 8.0 버전을 지원하는 Amazon Aurora MySQL 3 버전 출시와 관련된 내용에 대해서 확인해 보겠습니다.
파라미터 그룹
RDS 를 생성 하기 전에 파라미터 그룹을 설정이 필요 하기 때문에 파라미터 그룹을 새로 생성 후 파라미터를 변경 하도록 하겠습니다.
RDS 에서 파라미터 그룹 -> 파라미터 그룹 생성 으로 이동 합니다
파라미터 그룹을 생성 항목에서 파라미터 그룹 패밀리는 "mysql8.0" 으로 선택 하고 그룹 이름은 자유롭게 입력 후 하단의 "생성" 버튼을 클릭 합니다.
파라미터 검색 항목에서lower_case_table_names를 입력하여 검색 후에 "파라미터 편집" 을 클릭 합니다.
값을 1 로 입력 후에 상단에 "변경 사항 저장" 을 클릭 합니다
RDS 생성
RDS 에서 데이터베이스 생성 을 클릭 하여 DB 생성을 진행을 시작 합니다
생성 메뉴에서 먼저 버전을 선택을 해야 하며 lower_case_table_names=1 를 사용하기 위해서 8.0.19 버전 이상으로 선택하면 됩니다.
중간에 "추가 구성" 항목에서 "DB 파라미터 그룹" 에서 이전 단계에서 생성한 파라미터 그룹을 선택 하면 됩니다.
생성 이 완료 되었다면 몇가지를 통해 테스트를 해보도록 하겠습니다.
mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.25 |
+-----------+
mysql> show variables like'%lower_case%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
이전의 파라미터 그룹을 수정한 내용 처럼 lower_case_table_names = 1 이 설정 된 것을 확인 할 수 있습니다.
그 다음은 테이블을 생성 해보도록 하겠습니다.
mysql> createtable Tb_TEst_1NnM(col1 int);
mysql> createtable tB_teST_2NnM(col1 int);
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| tb_test_1nnm |
| tb_test_2nnm |
+----------------+
이와 같이 대소문자를 구분 하지 않게(소문자로) 생성되는 것을 확인 할 수 있습니다.
그래서 Amazon RDS for MySQL 8.0 에서도 lower_case_table_names =1 을 사용 하기 위해서는 이렇게 먼저 파라미터 그룹을 생성 및 파라미터를 수정하여 인스턴스를 생성 하시면 됩니다
RDS for MySQL using GTID-based
Amazon RDS for MySQL 8.0에서는 GTID 기반 복제 설정이 지원되지 않았으며 최근 버전인 8.0.26 버전 에서 부터 지원하기 시작 하였습니다.
추가로 MySQL 5.7 버전대에서는 5.7.23 부터 GTID 기반 복제기능을 사용할 수 있습니다.
8.0.26 버전과 그 이하 버전의 차이를 확인 해보기 위해서 인스턴스를 생성 하여 확인 해보도록 하겠습니다 (생성 작업 프로세스는 생략)
먼저 파라미터를 변경하기 위해서는 별도로 파라미터 그룹을 생성 하고 파라미터를 변경 하면 됩니다.
enforce_gtid_consistency 와 gtid_mode 는 ON 으로 설정 후 "변경 사항 저장" 을 클릭 합니다
8.0.26 이하 버전에서도 gtid 관련 파라미터는 설정은 가능 하며, 읽기 전용 복제본(Replica or Slave 인스턴스) 도 생성은 가능 합니다.
복제는 정상적으로 되고 있으나 복제 상태에서 보면 Auto_Position 이 0 인 것으로 확인 할 수 있습니다.
그럼 AWS RDS 인스턴스에서 사용할 수 있는 시스템 프로시저 중에서 rds_set_master_auto_position 이 있으며 해당 프로시저를 사용 해보도록 하겠습니다 Auto Position 를 활성화하여 복제 모드를 전역 트랜잭션 식별자(GTID)를 기반으로 설정 하는 것 입니다.
댓글