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();
Leave a comment