ํฐ์คํ ๋ฆฌ ๋ทฐ
*
ํ์์์ ์ ๊ณตํด ์ฌ์ฉํ๋ DB๋ฅผ ๋ฐ๋ก ์ฎ๊ธฐ๊ธฐ ์ํด
RDS์ MySQL์ ์ฌ์ฉํ๊ณ ,
๊ทธ์ ๋ง๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ๊ธฐ๋ก ํ๋ค.
๋ง์ด๊ทธ๋ ์ด์ (Mygration)์ด๋?
์ ๋ณด๊ธฐ์ ์์ ํ๋์ ์ด์ํ๊ฒฝ์์ ์ข ๋ ๋์ ์ด์ ํ๊ฒฝ์ผ๋ก ์ฎ๊ฒจ๊ฐ๋ ๊ณผ์
โซ ๋ ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ
1. AWS RDS
- MySQL๋ง ๋ฌด๋ฃ
2. ํ๋ฆฌํฐ์ด ์ ํ
3.
4.
- ์คํ ๋ฆฌ์ง ์๋ ์กฐ์ ๋นํ์ฑํ
5.
6.
- ์๋ ๋ฐฑ์ ๋นํ์ฑํ
7.
8. MySQL workbench ์ค์น
https://dev.mysql.com/downloads/workbench/
MySQL :: Download MySQL Workbench
Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Red Hat Enterprise Linux / Oracle Linux Fedora macOS Source Code Select OS Version: All Windows (x86, 64-bit) Recommended Download: Other Downloads: Windows (x86, 64-bit), M
dev.mysql.com
- sql developer๋ ๋น์ทํ ํ๋ก๊ทธ๋จ!
9.
- VPC ๋ณด์ ๊ทธ๋ฃน์ ์ ๊ทผ
10.
์ธ๋ฐ์ด๋ ๊ท์น : RDS ์ ์ ๊ทผ
์์๋ฐ์ด๋ ๊ท์น : RDS ์์ ์ถ๋ ฅ
๊ท์น์ ์์ฑํ๋๋ฐ ์ฐ์ด๋ ๊ฒ
1. ํฌํธ ๋ฒํธ
2. IP ์ฃผ์
โซ MySQL ์ ํฌํธ ๋ฒํธ 3306 ์ฌ์ฉ!
11.
12.
- ๊ท์น ์ถ๊ฐ ์ Anywhere IPv4, Anywhere IPv6 ๋ ๊ฐ์ง ์ถ๊ฐ
โซ ๋ชจ๋ IPv4, IPv6์ ๋ด๊ฒจ์ ธ ์ค๋ ์์ฒญ์ ํ์ฉํ๊ฒ ๋ค๋ ์๋ฏธ
- ์์๋ฐ์ด๋ ๊ท์น์ ์์ ์ฌํญ X
13.
- Hostname : 127.0.0.1 ์ ์์ฑ์ ํ๋ฉด ๋ณธ์ธ๋ง ์ ์ ๊ฐ๋ฅํ ๋ก์ปฌ ์ ์ฅ์๊ฐ ์์ฑ๋จ (์ธ๋ถ ์ ๊ทผ ๋ถ๊ฐ)
๋ฐ๋ผ์ ์๊น ๋ถ์ฌ๋ฐ์ ์๋ ํฌ์ธํธ๋ฅผ ํธ์คํธ๋ค์์ ๋ฃ์ด์ฃผ๋ฉด
๋ด๊ฐ ์ธ๋ถ ์ ์ฅ์(RDS์์ ์์ฑํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ก ์ ๊ทผ ๊ฐ๋ฅํด์ง!
14.
- ์คํจ ์ด์ : ๋ด๊ฐ ์ธ๋ฐ์ด๋ ๊ท์น ๋ง๋ ๊ฑธ ์ง์๋ฒ๋ฆฌ๊ณ ํ ์คํธ ํจ!
๋ํ ๋๋ ์คํ๋ง๋ถํธ์์ Mybatis๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ฟผ๋ฆฌ์ ์ฌ๋ฌ ์์ ์ด ํ์ํ๋ค.
์ ๊นโผ๏ธ
MyBatis๋?
๊ฐ์ฒด ์งํฅ ์ธ์ด์ธ ์๋ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ์ ์ฝ๊ฒ ๋๋ ํ๋ ์ ์ํฌ
์๋ฐ์์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ก๊ทธ๋๋ฐ์ ํ๊ธฐ ์ํด JDBC๋ฅผ ์ ๊ณต
*JDBC
์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํ๋ ์ธํฐํ์ด์ค
(DriverClass, Connection, PreparedStatement, ResultSet ๋ฑ..)
๋ง์ด๋ฐํฐ์ค๋ JDBC๋ฅผ ๋ณด๋ค ์์ํ ์ฌ์ฉํ ๋ก ๊ฐ๋ฐ๋์์ผ๋ฉฐ,
SQL ๋ฌธ์ ๋ณ๋ ํ์ผ๋ก ๋ถ๋ฆฌํด ์ฌ์ฉ, ๊ด๋ฆฌํ ์ ์๋๋ก ํ๋ค.
Mybatis ํน์ง
SQL ๋ฌธ์ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌ
- ์๋ DAO ํ์ผ์ ๋ชจ๋ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ์๋ค๋ฉด,
๋ง์ด๋ฐํฐ์ค์์๋ xml์ Mapper์ SQL ์ฟผ๋ฆฌ๋ฌธ์ ์ ๋ ฅํ๊ณ DAO์์ ํธ์ถํด ์ฌ์ฉ
์์ฐ์ฑ
- ์ฝ๋๊ฐ ์ค์ด๋ค๊ณ ๊ฐ๋ ์ฑ์ด ์ข์์ง
์ ์ง๋ณด์์ฑ ํฅ์
- ๋งคํผ ํ์ผ์ SQL ์ฝ๋๋ฅผ ๋ชจ์๋๊ณ SQL ์ฟผ๋ฆฌ๋ฌธ ๋ณ๊ฒฝ ์ ๋งคํผ ํ์ผ๋ง ์์ ํ๋ฉด
DAO์์๋ ์๋ฌด๋ฐ ์ํฅ๋ ๋ฐ์ง ์์ผ๋ฉฐ, ์์ ๋ ์ฝ๋๋ผ๋ ๊ทธ๋๋ก ํธ์ถํ๋ฉด ๋๋ค.
+)
sql : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด (์ธ์ด)
mysql : sql์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ (DBMS)
oracle : sql์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ (DBMS)
sql developer : oracle ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํด๋ผ์ด์ธํธ (ํด๋ผ์ด์ธํธ)
mysql workbench : mysql ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ํด๋ผ์ด์ธํธ (ํด๋ผ์ด์ธํธ)
MySQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ๋ณ๊ฒฝํด์ผ ํ ๊ฒ
- Mapper.xml - application.properties - build.gradle |
+ MySQL workbench์์ ์คํค๋ง ์์ฑ ํ์
Mapper (์์๋ก ๋ช ๊ฐ์ง๋ง ~)
ORACLE์์ ์ฌ์ฉํ๋ ๋ฌธ๋ฒ ์ค ๋ช๋ช์ด MySQL์์ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ด๊ทธ๋ ์ด์ ์์ ์ด ์ถ๊ฐ๋ก ํ์ํ๋ค.
โ auto_increment
์ด์ sql developer์์๋ ํ์ ๋ฒํธ, ๊ธ ๋ฒํธ ๊ฐ์ ๊ณ ์ ๋ฒํธ (Primary key)์ ์ํ์ค๋ฅผ ์ด์ฉํ๋ค.
- ํ์ง๋ง MySQL ์์๋ ์๋์ฒ๋ผ auto_increment๋ฅผ ์ฌ์ฉํด์ฃผ์๊ธฐ ๋๋ฌธ์
๊ฒ์๊ธ insert ์, ๋งคํผ ๋ด ์ฟผ๋ฆฌ์ ๋ฐ๋ก ์์ฑํ์ง ์์๋ ์๋์ผ๋ก ๊ณ ์ ๋ฒํธ๊ฐ ์์ฑ๋๋ค.
- ๋ํ BOARD_DATE ๊ฐ์ ๊ฒฝ์ฐ ์๋ ๋งคํผ ์ฟผ๋ฆฌ์ SYSDATE๋ฅผ ๊ธฐ์
ํ์ผ๋, default๋ฅผ ๊ธฐ์
ํด ์ค๋ค.
โผ
โก ์ปฌ๋ผ๋ช
MySQL workbench์ ๋ง๋ ํ ์ด๋ธ ๋ช ๊ณผ ๋์๋ฌธ์์กฐ์ฐจ ์ผ์นํด์ผ ํ๋ค!
sql Developer์์๋ ๋์๋ฌธ์๊ฐ ํฌ๊ฒ ์๊ด ์์์ผ๋, ์๊ฒ ์์ฃผ ์๋ฌ ๋ฐ์์ ์์ธ์ด์๋ค ^.^
โข DATE_FORMAT
sql Developer์ ์ฐ์ด๋ ์ฟผ๋ฆฌ์์๋ ๋ , ์, ์ผ, ์์ผ, ์๊ฐ ์ง์ ์ ์ํด TO_CHAR๋ฅผ ์ผ์ผ๋,
์ด๋ฒ์๋ DATE_FORMAT์ ์ฌ์ฉํด ์ง์ ํด์ฃผ์๊ณ , ๊ทธ๋ฅผ ์ํด TimeZone์ ์ฌ์ฉํ๋ค.
* RDS > ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน
Timezone์ด๋?
[MySQL] Windows ์์ Timezone ์ค์ ํ๊ธฐ
Timezone์ด๋? ์๊ฐ๋๋ ์๊ตญ์ ๊ทธ๋ฆฌ๋์น ์ฒ๋ฌธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง์ญ์ ๋ฐ๋ฅธ ์๊ฐ์ ์ฐจ์ด, ๋ค์ ๋งํด ์ง๊ตฌ์ ์์ ์ ๋ฐ๋ฅธ ์ง์ญ ์ฌ์ด์ ์๊ธฐ๋ ๋ฎ๊ณผ ๋ฐค์ ์ฐจ์ด๋ฅผ ์ธ์์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ์ํด ๊ณ ์๋ ์
hunda.tistory.com
RDS MySQL ์๊ฐ ๋ณ๊ฒฝํ๊ธฐ (Timezone ๋ณ๊ฒฝ)
1. Timezone? ํ์์กด์ด๋ ๋์ผํ ๋ก์ปฌ ์๊ฐ์ ๋ฐ๋ฅด๋ ์ง์ญ์ ์๋ฏธํ๋ค. ํด๋น ๊ตญ๊ฐ์ ์ํด ๋ฒ์ ์ผ๋ก ์ง์ ๋๋ฉฐ, ๊ตญ๊ฐ๋ณ๋ก ๊ฐ์์ ๊ณ ์ ํ ํ์์กด์ ์ฌ์ฉํ๋ค. ๋ฉด์ ์ด ๋์ ๋๋ผ์ธ ๊ฒฝ์ฐ ์ง์ญ๋ณ๋ก ๋ค๋ฅธ
hyunjun.kr
โฃ CONCAT() / LIKE์ '%' ์ฌ์ฉ๋ฒ
ORACLE์์๋ ๋ฌธ์์ ๋ฌธ์๋ฅผ ํฉ์น ๋ '||'์ ์ฌ์ฉ
๊ทธ๋ฌ๋ MYSQL์์๋ ๋ฌธ์์ ๋ฌธ์๋ฅผ ํฉ์น ๋ CONCAT() ํจ์๋ฅผ ์ฌ์ฉ
๋ณ๊ฒฝ ์ฌํญ)
โค ๋ฐ์ดํฐ ํ์
ORACLE์์๋ BOARD_CONTENT์ ์ด๋ฏธ์ง ์ ์ฅ์ ์ํด BLOB ๋ฐ์ดํฐ ํ์ (์๋ฃํ)์ ์ฌ์ฉํ์ผ๋,
MYSQL์์๋ ํด๋น ๋ฐ์ดํฐ ํ์ ์ฌ์ฉ์ด ๋ถ๊ฐํ๋ค (์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์)
message : ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'BOARD_CONTENT' at row 1 ### The error may exist in file [C:\Project\finalProject\FInalProj\bin\main\mappers\board-mapper.xml] ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: update BOARD set board_title = ?, board_content=? , board_cate=? where board_No= ? ### Cause: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'BOARD_CONTENT' at row 1 ; Data truncation: Data too long for column 'BOARD_CONTENT' at row 1 |
โซ ์ด ์๋ฌ๋ MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ BOARD_CONTENT ์ด์ ์ฝ์ ํ๋ ค๋ ๋ฐ์ดํฐ๊ฐ ์ง์ ๋ ๊ธธ์ด๋ณด๋ค ๊ธธ๋ค๋ ๋ป์ผ๋ก, BOARD_CONTENT ์ด์ด ์ง์ ๋ ๊ธธ์ด๋ณด๋ค ๊ธด ๋ฌธ์์ด์ ํฌํจํ๊ณ ์์ด์ ์ด๋ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒ (์ด๋ฏธ์ง ์ ์ฅ ์)
โ ์๋ ์ฐธ๊ณ
- ์ด์ง ๋ฐ์ดํฐ๋ MySQL์์ BLOB๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฅ |
๋ฐ๋ผ์ LONGTEXT๋ก ๋ฐ์ดํฐ ํ์ ๋ณ๊ฒฝ!
โผ LONGTEXT๋ก ๋ฐ๊พธ๋ ์ด๋ฏธ์ง ์ ์ฅ์ด ์ ๋์๋ค^^
application.properties
#oracle & mySQL
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=
spring.datasource.username= // MySQL username
spring.datasource.password= // MySQL password
#spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@112.221.156.35:9999:orcl
โซ ์๋ ์๋ ์ฃผ์์ ์๋ OracleDriver ์ฌ์ฉ
build.gradle
์๋๋ Oracle database์ ํธํ๋๋ JDK์ธ ojdbc8์ ์ฌ์ฉํ์ผ๋,
MySQL์ ์ฐ๊ฒฐํด์ผ ํ๊ธฐ ๋๋ฌธ์, mvnRepository์์ gradle(Short) ๋ณต๋ถ!
โผ
<MySQL workbench>
timestamp
sql Developer์์ CLOB์ ์ผ๋ค๋ฉด, MySQL์ LONGTEXT / BLOB ์ฌ์ฉ
TIMEZONE
(RDS ์๋ฒ์ ์๊ฐ์ ์ง์ ํ๋ ์ญํ )
์๋ MySQL์์ ํ์์กด์ ๋ณ๊ฒฝํ๋ ค ํ๋๋ฐ, ๊ถํ์ด ์ ๋ผ์ AWS ๋ณ๊ฒฝ
RDS > ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน
โซ ๊ธฐ๋ณธ๊ฐ : ํ์ฌ ํ๊ตญ ์๊ฐ์ด ์๋๊ฒ ์ค์ ๋์ด ์์
โซ ํ๊ตญ ์๊ฐ์ ๋ง์ถ๊ธฐ ์ํด ์๋ก์ด ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน ์์ฑ
์์ฑํ ํ ํธ์ง!
ํ์ฉ๋ ๊ฐ ๋ด์์ Asia/Seoul ์ ๋ ฅํ ํ Save Changes
Asia/Seoul๋ก ๊ฐ์ด ๋ฐ๋์ด์๋ ๊ฒ ํ์ธ!
RDS > ๋ฐ์ดํฐ๋ฒ ์ด์ค > finemeaning
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ต์ ์ DB ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน์ ์์ฑํ ํ์์กด์ผ๋ก ์ค์
์บก์ณ์ฉ์ผ๋ก ํ๋ ๋ ๋ง๋ ๊ฑฐ๋ผ..
์ด์ ์ ๋ง๋ค์๋ timezone์ด timezzone์ผ๋ก ๋ฐ๋์๋ค.
timezone์ ์์ ํ์ผ๋ฉด ๏ผ๏ผพ∀๏ผพโ๏ผ๏พ๏ฝผ
RDS์ DB ์ธ์คํด์ค๋ฅผ ์ฌ๋ถํ ํ๋ ๊ฒ์ด ์ข๋ค ๐๐ป
'๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
AWS์์ ์ธ์ฆ์ ๋ฐ๊ธ / HTTPS ์ ์ฉ (1) | 2023.11.19 |
---|---|
EC2 - ๋๋ฉ์ธ ์ฐ๊ฒฐ / ์ฌ์ดํธ ์ฃผ์์์ ํฌํธ ๋ฒํธ ์์ ๊ธฐ (:8080) (0) | 2023.11.06 |
ํด๋ํฐ sms ์ธ์ฆ๋ฒํธ ๊ตฌํ (๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ) (0) | 2023.05.22 |
ํด๋ํฐ ์ธ์ฆ๋ฒํธ ํ๋ฆ ๊ตฌ์ (0) | 2023.05.12 |
AWS EC2๋ก ์๋ฒ ๊ตฌ์ถํ๊ธฐ (0) | 2023.05.07 |