본문 바로가기
IT/AWS

AWS RDS MariaDB 한글 깨짐 현상 해결(character_set, collation)

by twofootdog 2020. 4. 12.

이번 글에서는 AWS RDS에 구축한 MariaDB에 데이터 입력 시 한글 깨짐 현상이 발생하는 문제를 해결하는 법에 대해 알아볼 것이다.

작업을 진행한 MariaDB는 10.2버전이다.

 

 

1. 왜 AWS RDS로 MariaDB를 생성하면 한글 깨짐현상이 발생할까?

AWS RDS에서는 DB를 생성할 때 속성값으로 파라미터 그룹을 지정하게 되어 있다. 파라미터 그룹은 간단히 말해서 해당 DB의 속성값이라고 보면 되는데 이 속성값에 character-set도 있다. 그런데 파라미터 그룹을 별도로 지정하지 않으면 기본 파라미터 그룹으로 설정되는데, 이 기본 파라미터 그룹의 character-set이 utf8이 아니기 때문에 한글이 깨지는 현상이 발생하게 된다.

그렇기 때문에 RDS로 DB를 생성할 때 character-set이 utf8인 파라미터 그룹을 생성한 후 생성하는 DB의 속성값으로 등록해야 한다.

 

 


2. 파라미터 그룹 신규 생성

우선 신규로 파라미터그룹을 만들어보자.

[AWS Management Console] -> [RDS] -> [파라미터 그룹] -> [파라미터 그룹 생성]을 선택한다. 

 

 

DB 버전에 맞게 [파라미터 그룹 패밀리]를 선택하고 [그룹 이름]을 임의로 작성 후 [생성]을 눌러준다.

 

 

그 다음 생성한 파라미터 그룹을 선택하고 [편집]을 누른다.

 

 

파라미터 검색창에 [character]을 입력하여 검색되는 아래 6개의 값을 [utf8]로 변경 후 [변경 사항 저장]을 누른다.

- character_set_client

- character_set_connection

- character_set_database

- character_set_filesystem

- character_set_results

- character_set_server

 

그 다음 파라미터 검색창에 [collation]을 입력하여 검색되는 아래 2개의 값을 [utf8_general_ci]로 변경 후 [변경 사항 저장]을 누른다.

- collation_connection

- collation_server

 

 


3. DB에 파리미터 그룹 연결 후 재부팅

DB를 신규로 만들게 되면 해당 DB의 파라미터 그룹에 조금 전 등록한 파라미터 그룹을 연결하면 되고, 만약 DB가 이미 등록되어 있다면 파라미터 그룹을 수정해주자.

[AWS Management Console] -> [RDS] -> [데이터베이스]에서 파라미터 그룹을 수정할 데이터베이스를 선택한 후 [수정]을 누른다.

 

 

[데이터베이스 옵션]에서 조금 전 생성한 파라미터 그룹을 선택한 후 [계속]을 누른다.

 

[즉시 적용] 선택 후 [DB 인스턴스 수정]을 누른다.

 

해당 데이터베이스의 [정보]가 [수정 중]에서 [사용 가능]으로 바뀌게 되면 [작업] -> [재부팅]을 해주자.

 


4. MariaDB 추가 작업

작업이 완료된 후 SQL을 실행시켜서 character-set 및 collation을 확인해보자.

show variables like 'c%';

 

SQL을 실행시키면 다른 정보들은 변경되었지만 character_set_databasecollation_database는 변경이 안된것을 확인할 수 있다(MariaDB에서만 발생하는 버그인 듯 싶다).

때문에 아래 SQL을 추가적으로 실행시킨 후 기존 테이블 삭제 후 재 생성하게 되면 한글깨짐현상 문제가 해결된다

ALTER DATABASE [데이터베이스명]
    CHARACTER SET = 'utf8'
    COLLATE = 'utf8_general_ci';

 


참고

https://velog.io/@minholee_93/AWS-Amazon-RDS-%ED%95%84%EC%88%98-%EC%84%A4%EC%A0%95

 

[AWS] Amazon RDS 필수 설정

참고자료 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스rds의 세부 설정은 파라미터 그룹을 통해 수행합니다.아래 그림을 참고해 파라미터 그룹을 생성합니다. 생성시 Parameter group family은 반드시 생성한 RDS의 DB version을 선택합니다.

velog.io

 

 

댓글