기존 서버 환경: Elastic Beanstalk + RDS(MariaDB)
바꾸려는 서버 환경: EC2 + RDS(MariaDB)
개발 서버 환경: EC2 + EC2 내부 DB(MariaDB)
기존의 서버환경에서는 빈스톡이 rds를 생성해주고 연결해주었기 때문에 간단하게 생성할 수 있었다. 서버 환경을 변경하게 되면서 ec2와 rds를 각자 생성해주고 연결하게 되었다.
ec2 환경 안에서만 데이터베이스에 접속할 수 있게 하기 위해 퍼블릭 액세스 가능은 "아니요"로 설정한다.
ec2 리눅스 환경에서 데이터베이스(mariaDB)에 접속하는 명령어
$ mysql -u root -p -h <rds 엔드포인트 주소>
장고 shell에서 유저 생성을 하려고 하니 한글이 데이터베이스 인코딩과 맞지 않아서 에러 생성
rds charset 설정 문제이기 때문에 설정 변경
rds 파라미터 그룹 생성
rds db 인스턴스와 파라미터 그룹 연결
반드시 재부팅!!
파라미터 적용 전 rds mariadb 설정 상태
스키마 설정 상태 볼 수 있는 명령어
$ SELECT * FROM information_schema.SCHEMATA;
빨간색으로 지운 부분 외에는 mariadb rds를 생성할때 자동으로 만들어지는 기본 스키마들이다.
innodb 와 mysql 스키마의 charset 설정이 utf8mb4가 아니라서 create database <database name>
으로 데이터베이스 생성을 하면 latin1 로 생성이 되는 문제가 있었다. 로컬에서는 해당 명령어만으로도 utf8mb4로 생성이 되었기 때문에 로컬 mariadb 와 비교를 해보았다.
로컬 db를 봤을 때는 create database <database name>
명령어를 칠 때 mysql 스키마의 설정을 따라 만들어지는 것으로 추측을 했었다.
하지만 rds에서 파라미터 그룹을 적용하고 나니 mysql 스키마가 아닌 innodb 스키마의 설정이 utf8mb4로 바뀌었고 create database <database name>
명령어를 치니 utf8mb4로 설정된 데이터베이스가 생성되었다.
로컬에는 innodb가 없어서 추측했던 대로 mysql 스키마의 설정대로 되는 것이 맞는 것 같고, rds 는 innodb 스토리지 엔진을 기본으로 하기 때문에 innodb 스키마가 있고 innodb 스키마의 설정을 기반으로 생성되는 것 같다.
(혹시 제가 틀렸거나 잘 알고 계시는 분은 댓글 부탁해요😄)
잘 봤습니다. 좋은 글 감사합니다.