MySQL 문제 해결
본 문서는 MySQL 서비스 관련 문제를 해결하기 위한 방법을 설명합니다.
VPC에서 Client 인스턴스와 MySQL 인스턴스 간 연결 불가
MySQL 인스턴스(클러스터)의 3306 또는 3307 포트에 연결할 수 없는 주요 원인은 다음과 같습니다.
가용성 상태 확인
새로 생성한 DB 인스턴스는 사용 준비가 완료될 때까지 Starting 상태로 표시됩니다. 인스턴스 그룹의 상태가 Available로 변경되고 인스턴스가 Running이 되면 연결이 가능합니다. 자세한 상태값은 인스턴스 그룹의 가용성 상태를 참고하시기 바랍니다.
| 인스턴스 그룹의 상태 | 가용성 상태 | 설명 |
|---|---|---|
AVAILABLE | READY | 모든 구성이 준비됨 |
DB 인스턴스 연결 테스트
-
Linux 또는 Unix 터미널에서 DB 인스턴스에 대한 연결을 테스트할 수 있습니다.
아래 명령어에서
DB-INSTANCE-ENDPOINT를 엔드포인트로,PORT를 포트로 대체하여 입력합니다.인스턴스 상태 테스트nc -vz "DB-INSTANCE-ENDPOINT" "PORT"예시:
샘플 테스트ubuntu@host-172-16-3-252:~$ nc -vz "DB-INSTANCE-ENDPOINT" "PORT"
Connection to "DB-INSTANCE-ENDPOINT" (172.16.3.154) "PORT" port [tcp/mysql] succeeded! -
Windows에서 DB 인스턴스에 대한 연결을 테스트할 수 있습니다.
Telnet을 사용하여 DB 인스턴스에 대한 연결을 테스트할 수 있습니다. Telnet 작업은 연결 테스트 이외의 목적으로는 지원되지 않습니다. 연결이 성공하면 메시지가 표시되지 않으며, 실패 시 오류 메시지가 나타납니다.연결 테스트C:\Users\Administrator>telnet "DB-INSTANCE-ENDPOINT" "PORT"
연결 대상 "DB-INSTANCE-ENDPOINT"...호스트에 연결할 수 없습니다. 포트 "PORT": 연결하지 못했습니다.
DB 인스턴스 소유자 암호 분실
DB 인스턴스의 소유자 암호를 분실했을 경우 카카오클라우드 헬프데스크로 문의하세요.
| 구분 | 설명 |
|---|---|
{MySQL-ADMIN-PASSWORD} | ⚠️ 관리자 계정 패스워드는 데이터베이스 구동 이후에 변경 가능 ⚠️ 데이터베이스 구동 후 사용자가 변경한 관리자 계정 패스워드는 확인 불가 |
DB 인스턴스 스토리지 부족
DB 인스턴스의 사용 가능한 스토리지 용량이 부족하면 엔드포인트(Endpoint) 접근이 되지 않거나 데이터 쓰기 작업이 중단, 쿼리 실행 시 응답이 없는 등 운영상 장애가 발생할 수 있습니다.
콘솔에서는 스토리지 용량 부족을 인지할 수 있도록 다음과 같이 확인 방법을 제공하고 있습니다.
인스턴스 그룹 상태 변경: 인스턴스 그룹의 상태가 Storage-Full로 변경
Storage-Full (Warning): 데이터 또는 로그 볼륨의 여유 공간이 30GB 이하
Storage-Full (Error): 데이터 또는 로그 볼륨의 여유 공간이 5GB 이하
얼럿 발생: 세부 정보 페이지에서 'Primary Storage 잔여 사용량' 얼럿 마크, '사용 가능한 스토리지 용량이 30GB 이하인 인스턴스' 얼럿 메시지 노출
지표 이상: 모니터링 탭 > DIsk > 디스크에서 사용 가능한 용량(Bytes) 확인
▶️ 해결 방법: DB 인스턴스의 스토리지 사용량이 적정한 수준으로 유지되도록 위와 같은 현상 발생 시, 볼륨 확장 기능을 통해 스토리지를 확장하세요.
슬로우 쿼리 조회 불가 (Monitoring > 로그 탐색기)
MySQL 서비스에서 슬로우 쿼리(Slow Query)는 파일로 저장되며, Monitoring > 로그 탐색기에서 조회할 수 있습니다.
5일이 초과한 로그의 조회
기본적으로 로그 탐색기에서는 최대 5일까지의 슬로우 쿼리 로그 적재 데이터를 확인할 수 있으며, 5일이 지난 로그는 확인할 수 없습니다.
▶️ 해결 방법: 5일이 경과한 로그가 필요한 경우 로그 추출을 통해 UTC 기준으로 최근 1주일 이내의 슬로우 쿼리 로그를 추출할 수 있습니다.
5일 이내 로그 확인이 불가한 경우, 카카오클라우드 헬프데스크로 문의하시기 바랍니다.
SSH 오류 메시지: Access denied
ERROR 1044 (42000): Access denied for user 'user'@'%' to database 'database'
이 오류는 사용자를 생성하고 권한을 부여하는 과정에서 발생합니다.
mysql> CREATE USER 'user'@'%' IDENTIFIED BY '1234';
mysql> GRANT ALL PRIVILEGES ON user.* TO 'user'@'%';
ERROR 1044 (42000): Access denied for user 'admin'@'%' to database 'database'
▶️ 해결 방법: 카카오클라우드 MySQL에서 제공하는 기본 저장 프로시저로 계정 및 권한을 관리하세요. 자세한 설명은 계정 설정 및 권한을 참고하시기 바랍니다.
인스턴스 가용성이 WarningSync가 된 경우
MySQL 서비스에서는 인스턴스간 데이터 복제 상태를 '가용 상태' 지표로 제공합니다.가용 상태가 WarningSync로 표시되는 경우, Standby 인스턴스가 Primary 인스턴스보다 더 많은 데이터를 보유하고 있어 데이터 동기화 역전 현상이 발생했음을 의미합니다.
▶️ 해결 방법: 가용 상태가 WarningSync가 된 인스턴스는 데이터 불일치로 인해 Auto Failover가 어렵습니다. 따라서 아래와 같이 인스턴스 그룹에서 가용 상태가 WarningSync로 표시되는 인스턴스를 삭제하세요.
- 가용 상태가 WarningSync인 인스턴스가 있는 인스턴스 그룹을 클릭한 후, 인스턴스 메뉴로 이동
- 삭제하려는 인스턴스를 선택하고 삭제 버튼을 클릭하거나 삭제하려는 인스턴스의 [⋮] 버튼 > 삭제를 선택
- (필요한 경우) HA 구성을 유지하려면, 인스턴스 메뉴 > [Standby 추가] 버튼을 클릭해 인스턴스를 추가 생성
단, 데이터양에 따라 sync가 오래걸릴 수 있으며 최신 데이터를 보유한 백업을 생성한 뒤 인스턴스 추가 생성을 권장합니다.