mysql 연결 문제
부트캠프 스프린트 4에서 프로젝트를 위해 Docker desktop 이 제공하는 로컬 클러스터에 데이터베이스 설치를 하려고 했다.
첫번째로 강의 자료로 받은 k8s manifest를 이용하여 데이터베이스 인스턴스를 실행하는 것 부터가 문제였다.
volume 데이터 설정을 위한 notes-db-volume.yaml
파일에서 hostPath:path를 설정하는 부분이 있었는데, 이 부분 작성하는 것이 어려웠다. 작업을 못하고 있던 와중에 다른 수강생분이 윈도우에서 path를 설정하는 방법에 대해 알려주셨고 그대로 실행했더니 몇 번의 오류가 있었지만 정상적으로 설치할 수 있었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
apiVersion: v1
kind: PersistentVolume
metadata:
name: notes-db-volume
labels:
type: local
namespace: db
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "<Path to your data directory>"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: notes-db-pvc
namespace: db
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
설정 완료 아웃풋
notes-db라는 서비스가 30036포트에서 실행되는 것을 확인할 수 있다.
다음 단계인 mysql를 사용하여 db를 생성하려고 했더니.. 바로 오류가 났다.
1
2
3
mysql --protocol tcp -P 30036 -u root -p < init-user.sql
Enter password: ****
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error:0
mysql과의 서버 연결에 실패했다는 오류 메세지이다. 네트워크 리소스도 확인해보았지만 제대로 동작 중이었다.
이번 프로젝트는 mariadb를 사용하기 때문에 단순하게 mariadb 포트를 연결하면 제대로 작동하겠지? 하고 port를 변경한 것이 원인이었다. 부트캠프에서 mariadb를 설치할 때 이미 내 컴퓨터에서는 mysql가 3306 포트를 사용하고 있어, 3307 포트를 사용하도록 했었다. 그래서 db volume을 만드는 notes-db-volume.yaml
파일에서 port값을 3307로 설정했었다.
mariadb 역시 mysql server를 사용하기 때문에 mysql server가 실행되는 3306 포트로 지정을 했어야했는데, mysql server가 없는 포트로 연결을 시도했기 때문에 연결에 실패했었던 것이다.
db volume을 만드는 notes-db-volume.yaml
에 port를 다시 3306 포트로 변경하고 재 생성하니 mysql과 연결에 성공하였다.