#CMD에서
cd Documents # Documents (내문서)로 이동
mkdir sql_ws # sql_ws 폴더를 만듦
cd sql_ws # sql_ws 폴더로 이동
code . # sql_ws 폴더에서 vscode 실행 : vscode 가 실행됨
#VS코드에서
test01.sql 새파일 만든 후 sql 쿼리문을 작성한다.
create table police_station
(
name varchar(16),
address varchar(128)
);

저장 후, 다시 터미널 가서 작성한다.
VS코드 장점이 이 안에서 모든 것이 가능하다.
터미널은 Terminal 탭에서 New Terminal 누르거나, 윈도우의 경우 터미널에서 Git Bash를 사용하는게 편리함.
위치하면, ~/Documents/sql_ws 안에 들어와 있고,
mysql -u root -p 비번 치고 들어가면,
show databases;
zerobase가 없으면 만들어주면 된다.
없다면,
creat database zerobase default character shet utf8mb4;
로 만들면 된다.
다시 show databases;로 확인해보고 이 상태에서 환경은 use zerobase; 로 진입해서 사용해야 한다.
한번 더,
mysql -u root -p zerobase
하면 비번이 아니라 zerobase(DB)로 진입하게 된다.
그리고,
show tables; 해보면, 현재 아무것도 없는데,
이 상태에서 test01.sql 파일 실행해보자.
source test01.sql 하면 쿼리 ok하고 실행된다.
show tables; 해보면, police_station(위에서 작업한) 테이블이 생겨져 있다.
desc police_station; 하면, name, address 내용 확인할 수 있다.
exit로 나가주고,
#2번째 방법 : 외부에서 실행하는 방법
이제는 test02.sql 파일 만들어준다. 이 안에서 다시 crime_status 만든다.
CREATE table crime_status
(
year YEAR,
police_station varchar(8),
crime_stype varchar(16),
status_type char(2),
case_number int
);

저장 후 zerobase에 접속하면서 바로 만든 sql파일 실행하려고 한다.
mysql -u root -p zerobase < test02.sql
명령어 입력
desc crime_status; 해서 위에서 만든 컬럼을 확인할 수 있다.
이렇게 test01로 mysql에 접속해서 파일을 실행하는 방법과
test02로 터미널 단계에서 mysql 접속하지 않고 외부에서 파일 실행시키는 방법 실습했다.
이번에는 #백업
터미널에서 sql_ws 로 위치 확인하고,
mysqldump -u root -p zerobase > zerobase.sql
: zerobase에 있는 내용을 zerobase.sql 파일로 저장하는 것. 실행하고
ls로 리스트 확인하고 code .으로 VS코드로 들어가면, zerobase.sql 파일 확인하면 내용들이 담겨있다.
수업에 사용한 쿼리문도 한번 봐라. 아니면 수업 외 쿼리문 보면서 공부해도 좋다.
AWS RDS서버 시작돼 있는지 확인하고, 과금 때문에 수업 후에는 반드시 일시중지 해라.
이게 되면, 로컬에서 백업 받은 파일을 remote database-1로 보내는 작업한다.
그러려면 remote 페이지로 접속 해야 하는데,
mysql -h "엔드포인트" -P 3306 -u admin -p
비번 치니깐 도 되네.
이상태에서 show databases; 확인하고
use zerobase; 이동하고
이제 폴더 위치가 sql_ws안에 있고, 여기서 현재 remote 페이지에다가
source zerobase.sql 파일을 실행해주자. 그안에 있는 내용 다 들어가면서 쿼리 OK가 된다.
show tables; 하면, 로컬에서 작업한 tables들이 담겨 있다.
#백업(Backup)과 리스토어(Restore)
여기까지는 로컬에 있는 파일 백업하고 거기 있는 내용을 remote로 저장하는 것 까지 해봤다.
먼저, 로컬에서 zerobase의 celeb 테이블 백업.
가장 먼저,
mysqldump -u root -p zerobase celeb > celeb.sql
zerobase에서 celeb을 celeb.sql 이름으로 백업하겠다는 코드다.
실행하면 비번 치고
(실습 경우, 오류가 나서 ) exit 후에 다시 하니깐 된다.
celeb.sql 파일 보니, 수업 때 작성한 쿼리들이 담겨있더라.
로컬에 있는 데이터베이스를 테이블 하나 특정해서 백업하는 것 해봤다.
이제 여기 있는 것을 AWS 서버에 만든 리모트 database에다 옮기는 작업 할 거다.
mysql -h "엔드포인트" -P 3306 -u admin -p zerobase
이걸 실행했는데, show tables;가 안되네.
(원래) show tables;를 하면 로컬에 작성한 것을 실습했는데, 이번에는, 지금 만든 celeb.sql 파일을 table안에 넣으려고 한다.
그래서 drop table celeb;을 한다.
show tables; 다시 확인해보면 삭재 돼 있고,
이상태에서
source celeb.sql 이라고 작업하면 쿼리ok 여러번 실행되며
show tables; 다시 실행해보면, celeb 테이블 있고,
desc celeb; 해보면, 어떻게 내용 들어가있는지
select * from celeb; 해보면 내용도 그대로 있는지 확인할 수 있다.
테이블 리스토어까지 해봤다.
이번에는 테이블 스키마(Table Schema) 내용만 백업해보자.
로컬에 있는 걸 해보려고 한다.
exit로 나간 다음에,
로컬/sql_ws 폴더 확인해주고,
mysqldump -d -u root -p zerobase snl_show > snl.sql
파일로 내보내자.
실행하면, SQL_WS안에 snl.sql 파일이 생성됐다.
현재까진 데이터는 없더라.
(나 경우에는 오류가 있어서 질문을 했고 : -d 옵션에 대해
그 결과 snl_schema.sql로 파일을 생성했다.
->
mysqldump -d -u root -p zerobase snl_show > snl_schema.sql
그 결과 문제 해결이 됐다.
여기서 한가지 문제가 더 발생했다.
바로 한글 깨짐 현상이 생겼다.

정말 많은 사람들이 이 문제를 겪었는데,
수강생 중 한가지 방법으로 문제가 해결 된 사람도 있었고, 다른 방법이 유효한 경우도 있었다.
문제해결을 위한 참조 사이트를 각각 게시하면(클릭하면 링크 연동),
1. MySQL에서 sql 파일로 데이터 추가 시 한글 깨짐 문제(feat:명령프롬프트)
3. VS code 한글 폰트 깨짐 문제 해결 (How to fix Korean font broken problem in VScode)
위와 같다.
필자의 경우 3번째 링크를 통해 시스템 재부팅 후 문제가 해결됐다.
그런데 절반만 해결된 건 좀 이상함.
