AWS RDS 생성 및 설정 방법 / RDS 사용법 / RDS DB 오류 해결

AWS RDS 생성 방법

RDS용 VPC 보안그룹 생성

VPC > Security Groups Create > security group

Security group name DB-SG 입력
Description Database Security Group 입력
VPC VPC-Lab-vpc 선택
Inbound rules > Add rule 유형 : MSSQL 선택
소스 : Aanwhere-IPv4 입력
Outbound rules (기본값) 유형 : 모든 트래픽
대상 : 0.0.0.0/0

위와 같이 입력 후, Create security group 클릭하여 보안그룹을 생성합니다.

AWS RDS 생성 방법 (MSSQL)

RDS > Create database

Choose a database creation method Standard create 선택
Engine type Microsoft SQL Server 선택
Database management type Amazon RDS 선택
Edition SQL Server Express Edition 선택
Engine versions SQL Server 2014 12.00.6439.10v1 선택
Templates Dev/Test 선택
Settings DB instance identifier : DB명 입력,
Master username : 마스터유저명 입력,
Master password : 마스터유저비밀번호 입력
Instance configuration 버스터블 클래스 선택 > db.t3.micro 선택
(개발 DB 기준)
Storage 스토리지 유형 : 범용 SSD(ap2) 선택
스토리지 : 200 GiB 입력
Virtual private cloud (VPC) RDS DB가 위치할 VPC 선택
DB 서브넷 그룹 RDS DB가 위치할 서브넷 선택
Existing VPC security groups DB-SG 선택, default 삭제
가용 영역 RDS DB가 위치할 가용 영역 선택

위와 같이 입력 후 Create database로 RDS를 생성하면 엔드포인트로 접근할 수 있습니다.

DB 퍼블릭 액세스 가능 설정

RDS > 데이터베이스 > DB 선택 > Modify(수정) > Connectivity(연결) : Additional configuration(추가 구성) 선택 > Publicly accessible(퍼블릭 액세스 가능) 체크 > Continue(계속)
위 설정을 하지 않으면, DB 툴에서 DB에 접근할 수 없습니다.


AWS RDS 사용법

DB 파라미터 설정 변경 방법

RDS > 데이터베이스 > DB 선택 > 구성 탭 > DB 인스턴스 파라미터 그룹 클릭 > 우측 상단 편집 버튼 > 변경하려는 파라미터 검색 > 값 변경 > 변경 사항 저장 > 변경된 파라미터는 RDS DB를 재시작하면 적용됩니다.

RDS 재부팅 방법

RDS > 데이터베이스 > DB 선택 > 우측 상단 작업 버튼 > 재부팅

.bak 파일 백업 및 복원 방법

https://0songha0.github.io/aws/2023-10-24-1


RDS DB 오류 해결

프로시저 생성 시 오류 해결

프로시저 생성 시 오류

SQL Error [1418] [HY000]: (conn=140) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

위와 같은 오류가 나오면, DB에 연결된 파라미터 그룹에서 log_bin_trust_function_creators 값을 1로 변경 후 다시 실행하면 됩니다.

프로시저가 속할 계정이 없는 경우

SQL Error [1227] [42000]: (conn=140) Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation

프로시저 생성 쿼리에서 DEFINER=’유저명’@’%’을 빼거나, 해당 유저를 생성한 뒤 다시 시도하면 됩니다.

프로시저 리턴 값에 언어셋 지정한 경우

Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '='

프로시저 함수에는 리턴 변수 언어셋을 utf8mb4_general_ci로 지정했는데, 프로시저를 호출하는 쿼리에서는 언어셋을 utf8mb4_unicode_ci로 지정했을 경우 DB 버전에 따라서 톰캣 실행 시 오류가 날 수 있습니다.
언어셋을 비교하지 않거나, 같은 언어셋으로 맞춰줘야 합니다.

언어셋이 다른 테이블끼리 Join 하거나, 언어셋이 다른 컬럼끼리 비교하는 쿼리에서도 같은 오류가 날 수 있습니다.
사용자들이 이용하지 않는 시간대에 DB Collation을 변경하여, 신규 테이블 생성 시 해당 언어셋이 적용되도록 조치 하였습니다.
네이버클라우드 DB의 경우, NCP Console 환경에서 CDB Config 설정을 통해 DB Collaction을 변경할 수 있습니다.

쿼리 대소문자 오류 해결

쿼리는 대문자인데 실제 테이블이 소문자인 경우

Table 'DB명.테이블명(대문자)' doesn't exist

대소문자 구분 여부 확인

show variables like 'lower_case_table_names';

기본값 0으로 되어있으면 쿼리에서 대소문자를 구분하여 실행하기 때문에 소문자 테이블은 찾을 수 없다고 나옵니다.
DB에 연결된 파라미터 그룹에서 lower_case_table_names를 1로 변경 후 재부팅하면 해결됩니다.

MySQL 8.0에서 lower_case_table_names 설정 시 오류

The parameter value for lower_case_table_names can't be changed for MySQL 8.0 DB instances.

MySQL 8.0은 lower_case_table_names를 1로 설정할 수 없습니다.
기존 프로젝트 DB 테이블명이 모두 소문자이고 쿼리에서는 테이블명이 모두 대문자라서 다른 버전으로 재설치해서 다시 구축하였습니다.

MySQL 버전 확인 방법

SELECT version();

Categories:

Updated:

Leave a comment