AmazonAWS

Amazon RDS MariaDB UTF-8 변경

Figo Kim 2015. 11. 12. 15:14
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

참으로 간만에 하는 포스팅이군요,,, 그 동안 많이 혼자 바쁘게 일했습니다.


오늘은 아마존 AWS의 RDS에 대해서 간단한 팁을 공유하고자 합니다.


회사 업무가 오스트리아 - 한국 이렇게 이원화 되어 있다보니, 자연스럽게 양쪽에서 비교적 원활하게 사용할 수 있는 Amazon AWS기반으로 시스템을 구축하게 되었네요.


우선 데이터베이스를 RDS로 구축하면서 mariadb를 사용했는데,

문제는 DB의 인코딩이 아마존 기본 인코딩인 latin1으로 설정이 된다는겁니다. 영문만 사용한다면 문제가 없지만, 영어, 한글, 독일어,체코어..등등 여러가지 언어가 쓰일 수 있는 회사 업무상 절대적으로 utf-8을 사용해야 하는 상황입니다.


아무튼 인코딩 생각 안하고, 생성된 인스턴스로 데이터 마이그레이션을 해보니 모든 한글이 ?로 표기되는 문제가 발생해버렸더군요.


구글 검색 결과인스턴스의 parameter option에서 character set관련된 파라미터를 모두 utf-8으로 바꾸면 된다고 되어 있었습니다.


파라미터값을 아래와 같이 변경했습니다.



네 위에서 볼 수 있듯이 모두 utf-8입니다. 동적으로 적용된다고는 하지만, 보다 확실히 하기 위해서 DB인스턴스도 재부팅했봤네용..


어라 ?? 

SQL client에서 확인해보면 collation_database와 character_set_database는 여전히 latin1으로 되어 있다는 겁니다.


이상하다 싶어서 한번 더 해봤지만 마찬가지입니다.




결국 해결책은 mariadb 기술 문서에 언급이 되어 있었습니다.


https://mariadb.com/kb/en/mariadb/server-system-variables/#collation_database


https://mariadb.com/kb/en/mariadb/server-system-variables/#character_set_database


위 두 링크에서 공통적으로 명시가 된 내용은 


This variable is dynamic, but should not be set manually, only by the server.


즉, 파라미터에 의해서 변경될 수 없고, 서버에서 직접 수정되어야 한다는 말입니다.


쉽게 말하면 database에 대해서 alter명령어를 사용해서 변경해야 한다는 거죠.


아마 구글 검색 결과 내용은 MySQL기준인듯 싶은데, MySQL쌍둥이 형제에서 출발한 MariaDB가 점점 다른 모습으로 변화하고 있다는 느낌이 드는건 뭘까요?? ㅎㅎㅎㅎㅎ 


ALTER DATABASE {database_name}
CHARACTER SET = 'utf8'
COLLATE = 'utf8_general_ci';


이렇게 하고 나서야, DB 인코딩이 모두 UTF-8으로 변경되었습니당...


그럼 모두들 수고하세용~~






'AmazonAWS' 카테고리의 다른 글

EC2 instance에 S3권한 Attach하기 2편  (0) 2016.03.19
EC2 instance에 S3권한 Attach하기 1편  (0) 2016.03.19
Region(리젼)과 Availability Zone  (0) 2014.07.09
인스턴스와 AMI  (0) 2014.07.08
Elastic Block Storage(EBS) 추가하기  (0) 2014.07.07