본문 바로가기

Cloud/AWS

AWS RDS parameter group을 이용해 character-set 변경(utf8), 타임존 변경하기

반응형


지난 포스팅에선 AWS RDS 파라미터 그룹을 생성하고 function을 생성할 수 있는 권한을 만들기 위해서 log_bin_trust_function_creators 변수를 변경해주었습니다.

이번 포스팅에선 지난 포스팅에서 생성한 파라미터 그룹을 이용하여 character-set , 타임존을 변경해보겠습니다.

우선 RDS 대시보드 콘솔로 이동합니다.

 

 


왼쪽 메뉴의 파라미터 그룹으로 이동합니다.


지난 포스팅에서 생성한 my-parameter-group 이 있습니다. 선택하시고 파라미터 편집으로 이동합니다.


필터에 character_set 으로 검색하면 6개의 항목이 나오는데 값 편집으로 모두 utf8로 변경합니다.

  • character_set_client : utf8
  • character_set_connection : utf8 
  • character_set_database : utf8
  • character_set_filesystem : utf8
  • character_set_results : utf8
  • character_set_server : outfit


그 다음으로, collation으로 검색을 하면 두가지 항목이 나오는데 utf8_unicode_ci로 변경합니다.

  • collation_connection : utf8_unicode_ci
  • collation_server : utf8_unicode_ci

여기까지 수정하셨다면, 데이터베이스의 utf8 설정이 완료 된 상태입니다. 이제 timezone을 설정해보겠습니다.

MySQL Workbench에서 해당 RDS에 접속하고 한글화 설정을 위한 프로시져를 등록합니다.

DELIMITER |
CREATE PROCEDURE '설치한 DB명'.`store_time_zone`()
    IF NOT (POSITION('rdsadmin@' IN CURRENT_USER()) = 1) THEN
        SET SESSION time_zone = 'Asia/Seoul';
    END IF |

DELIMITER ;




프로시져를 등록했으면, 다시 파라미터 편집화면으로 이동하여 필터에 init_connect를 검색합니다.



  • init_connect : CALL (설치한 DB명).store_time_zone
으로 값을 설정합니다. 이렇게 되면 조금 전에 생성한 timezone을 설정하는 프로시져가 DB에 최초 접속할 때마다 실행되므로 자동으로 timezone을 설정하게 됩니다.
 
여기까지 character-set을 변경하고, timezone 설정까지 마쳤다면 변경 내용을 저장하고 다시 RDS 인스턴스 콘솔로 이동해보면 아래와 같이 파라미터 그룹이 적용 중인 것을 확인 할 수 있고 시간이 조금 지나면 적용 된 화면을 확인하실 수 있습니다. 





이제 이 설정들이 실제로 적용되었는 지를 확인하기 위해 다시 workbench화면으로 이동합니다.

DB에 접속하여

select now(); 


쿼리 실행 시 현재 시간이 정상적 출력되는 것을 확인할 수 있습니다.

그리고 character-set 변경을 확인하기 위해서는

SHOW VARIABLES LIKE '%colla%';
SHOW VARIABLES LIKE '%char%';


쿼리를 실행하면 해당하는 값들이 utf8로 변경되어있는 것을 확인할 수 있습니다.