본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
MySQL
MySQL 설치
MySQL :: Download MySQL Community Server
이곳에서 본인 OS에 맞는, 원하는 버전을 다운로드 받아서 설치하면 된다.
Docker를 사용하여 MySQL 설치
Docker로 MySQL을 띄우는 이유
독립적인 프로세스 운용
내 로컬 환경에 설치된 MySQL과 독립적으로 DB를 운영하고 싶은 경우 도커를 이용할 수 있다.
예를 들어 나는 새로운 프로젝트 시작할 때 MySQL설정을 이것저것 바꿔야 했는데 잘못된 설정을 되돌리지 못해 MySQL를 지웠다 설치했다 여러 번 한 경험이 있다. 이럴 때 기존 MySQL에 있는 자료들도 다 삭제하게 돼서 많이 불편했던 경험이 있다.
도커를 이용해 MySQL을 컨테이너로 띄우면 잘못된 설정을 하더라도 MySQL을 매번 삭제할 필요 없이 컨테이너를 삭제하고 다시 띄우기만 하면 된다.
또한 로컬 환경과 독립적으로 실행되기 때문에 컨테이너를 삭제하고 다시 올려도 로컬 환경에 설치된 MySQL에 전혀 변경이 없다.
또 다른 예시로는 다음과 같은 경우가 있다.
내 로컬 환경에 MySQL 뿐만 아니라 MriaDB 같은 복수의 DB가 설치되어 있다고 하자.
이 경우 포트 번호가 중복될 수 있고, MySQL과 MriaDB 같은 경우에는 자칫 잘못하면 설정이 이상하게 공유되는 경우가 있을 수 있다.
도커로 MySQL을 띄우면 외부와 연결되는 포트번호를 지정해 줄 수 있고 독립적인 환경에서 실행되기 때문에 위와 같은 문제를 해결할 수 있다.
데이터베이스, 유저 생성
create database board;
create user 'yoon'@'%' identified by 'yoon';
select `user` from `mysql`.`user`;
show grants for 'yoon'@'%';
grant all on `board`.* to 'yoon'@'%' with grant option;
flush privileges;
application.yaml 생성
debug: false
management:
endpoints:
web:
exposure:
include: "*"
logging:
level:
com.fastcampus.projectboard: debug
org.springframework.web.servlet: debug
org.hibernate.type.descriptor.sql.BasicBinder: trace
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3305/board
username: yoon
password: yoon
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
defer-datasource-initialization: true
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 100
h2.console.enabled: false
sql.init.mode: always
디버그 구성
debug: false
이는 애플리케이션이 디버그 모드에서 실행되어야 하는지 여부를 나타냅니다. 'true'로 설정하면 더 자세한 디버깅 정보를 제공하는 디버그 모드가 활성화됩니다.
액추에이터 엔드포인트 구성
management:
endpoints:
web:
exposure:
include: "*"
이 구성은 웹 인터페이스를 통해 사용 가능한 모든 액추에이터 엔드포인트를 노출합니다. 액추에이터 엔드포인트는 애플리케이션에 대한 다양한 정보와 모니터링 기능을 제공합니다.
로깅 구성
logging:
level:
com.fastcampus.projectboard: debug
org.springframework.web.servlet: debug
org.hibernate.type.descriptor.sql.BasicBinder: trace
이 섹션에서는 애플리케이션의 다양한 패키지 또는 클래스에 대한 로깅 수준을 구성합니다.
- com.fastcampus.projectboard 패키지는 DEBUG 수준에서 기록됩니다.
- org.springframework.web.servlet 패키지는 DEBUG 수준에서 기록됩니다.
- org.hibernate.type.descriptor.sql.BasicBinder 클래스는 DEBUG보다 더 자세한 TRACE 레벨에서 로그를 기록합니다.
데이터소스 구성
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3305/board
username: yoon
password: yoon
driver-class-name: com.mysql.cj.jdbc.Driver
이는 애플리케이션의 MySQL 데이터베이스 연결을 위한 데이터 소스를 구성합니다.
JPA 구성
spring:
jpa:
defer-datasource-initialization: true
hibernate:
ddl-auto: create
show-sql: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 100
이 섹션에서는 다양한 JPA 및 Hibernate 설정을 구성합니다.
- defer-datasource-initialization: true는 필요할 때까지 데이터 소스 초기화를 연기합니다.
- ddl-auto: create는 Hibernate가 데이터베이스 스키마를 생성해야 함을 나타냅니다. 제작 시 주의하세요.
- show-sql: true를 사용하면 SQL 쿼리 로깅이 활성화됩니다.
- format_sql: true는 로그의 가독성을 높이기 위해 SQL 쿼리 형식을 지정합니다.
- default_batch_fetch_size: 100은 성능 향상을 위해 기본 배치 가져오기 크기를 설정합니다.
H2 콘솔 구성
spring:
h2:
console:
enabled: false
H2 데이터베이스 관리를 위한 웹 기반 도구인 H2 데이터베이스 콘솔이 비활성화됩니다.
SQL 초기화 구성
spring:
sql:
init:
mode: always
애플리케이션 시작 중에 SQL 스크립트가 실행되어야 함을 지정합니다('항상' 모드).
'패스트캠퍼스 강의' 카테고리의 다른 글
[19일차] 50일 포트폴리오 챌린지 (0) | 2023.08.26 |
---|---|
[18일차] 50일 포트폴리오 챌린지 (0) | 2023.08.25 |
[16일차] 50일 포트폴리오 챌린지 (0) | 2023.08.23 |
[15일차] 50일 포트폴리오 챌린지 (0) | 2023.08.22 |
[14일차] 50일 포트폴리오 챌린지 (1) | 2023.08.21 |