SQL_심화_1

MR.HAN·2023년 11월 26일

SQL

목록 보기
3/10
post-thumbnail

내용 보강 예정...

1. AWS RDS

  • AWS RDS : Amazon Relational Database Service, AWS에서 제공하는 관계형 데이터베이스 서비스
    - 데이터베이스 생성 과정은 구글링
# AWS RDS(database-1)에 접속
mysql -h "엔드포인트" -P 3306 -u admin -p비밀번호

# 데이터베이스 확인
show databases;

# Database(zerobase)를 생성하고 확인 (DEFAULT CHARACTER SET utf8mb4)
CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;

# 사용자(zero)를 추가하고 확인 (현재 외부접속 중, 로컬은 %가 아닌 localhost) 
CREATE USER 'zero'@'%' IDENTIFIED BY 'zerobase'; 

# 계정 정보 확인 (계정 정보는 mySQL DB에서 관리)
use mysql;
show tables;
select host, user from user;
flush privileges # 나타나지 않는다면 새로고침

# 참고. 계정 삭제
DROP USER 'zero'@'%';

# 사용자(zero)에게 외부에서 zerobase에 접근해서 사용하기 위한 권한 부여

# 사용자(zero)권한 확인
show grants for 'zero'@'%';

# 사용자(zero) 모든 권한 부여
grant all on zerobase.* to 'zero'@'%';

# 참고. 권한 삭제
revoke all on zerobase.* from 'zero'@'%';


02. SQL File

  • SQL File : SQL 쿼리를 모아놓은 파일
    - database, table을 백업하고 복구하는데 이용

  • Database Backup : SQL File로 Database를 백업할 수 있다.
    - Terminal에서 항상 경로 위치 확인 (cd Documents, cd sql_ws)

# zerobase.sql파일로 로컬계정 root의 데이터베이스인 zerobase의 내용을 백업
mysqldump -u root -p zerobase > zerobase.sql

  • Database Restore : 데이터베이스를 백업한 SQL File을 실행하여 그 시점으로 복구하거나 이전할 수 있다.
    (SQL File을 실행하는 방법과 동일)
    -로컬에서 저장한 백업파일을 Remote 데이터베이스로 보내기
    - Terminal에서 항상 경로 위치 확인 (cd Documents, cd sql_ws)
# AWS RDS 접속
mysql -h "AWS RDS 엔드포인트" -P 3306 -u admin -p

# zerobase 데이터베이스 사용
use zerobase;

# 현재 경로에 있는 zerobase.sql 백업
source zerobase.sql

  • Table Backup : Table 단위로도 백업할 수 있다.
    - Terminal에서 항상 경로 위치 확인 (cd Documents, cd sql_ws)
# celeb.sql파일로 로컬계정 root의 데이터베이스인 zerobase 내 celeb 테이블을 백업
mysqldump -u root -p zerobase celeb > celeb.sql

  • Table Restore : Table을 백업한 SQL File을 실행하여, 해당 테이블을 복구하거나 이전할 수 있다.
    (SQL File을 실행하는 방법과 동일)
    -로컬에서 저장한 백업파일을 Remote 데이터베이스로 보내기
    - Terminal에서 항상 경로 위치 확인 (cd Documents, cd sql_ws)
# AWS RDS 접속, zerobase 데이터베이스 사용 한번에
mysql -h "AWS RDS 엔드포인트" -P 3306 -u admin -p비밀번호 zerobase

# 현재 경로에 있는 celeb.sql 백업
source celeb.sql

  • Table Schema Backup : 데이터를 제외하고 테이블 생성 쿼리만 백업할 수 있다.
# snl.sql파일로 로컬계정 root의 데이터베이스인 zerobase 내 snl_show 테이블 생성 쿼리를 백업 (데이터 내용은 없음.)
mysqldump -d -u root -p zerobase snl_show > snl.sql

실습

# AWS RDS (database-1) 의 zerobase 데이터베이스를 백업하세요.
# AWS RDS database 를 백업할 경우 다음의 옵션을 추가합니다.
# --set-gtid-purged=OFF
mysqldump --set-gtid-purged=OFF -h "database-1.c9igwn95emuj.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p비밀번호 zerobase > backup_zerobase.sql

# AWS RDS (database-1) 에 admin 계정으로 로그인하세요.
mysql -h "database-1.c9igwn95emuj.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p비밀번호

# Database (zerodb) 를 생성하세요. 
# (DEFAULT CHRACTER SET utf8mb4)
create database zerodb default character set utf8mb4;

# 앞서 생성한 사용자 (zero@%) 에게 zerodb 의 모든 권한을 부여하세요.
grant all on zerodb.* to 'zero'@'%';

# 앞서 백업한 zerobase 백업 파일을 zerodb 에서 실행하세요.
source backup_zerobase.sql;
  • police_station 테이블에 아래 데이터를 INSERT 하기 위한 SQL 파일을 생성하세요.

    - vscode에서 insert.sql파일 생성
# sql_ws에 insert.sql파일 생성
INSERT INTO police_station VALUES ('서울특별시경찰청', '서울시 종로구 사직로8길 31');
INSERT INTO police_station VALUES ('서울중부경찰서', '서울특별시 중구 수표로 27');
INSERT INTO police_station VALUES ('서울종로경찰서', '서울특별시 종로구 율곡로 46');
INSERT INTO police_station VALUES ('서울남대문경찰서', '서울특별시 중구 한강대로 410');
  • SQL 파일을 실행하여
    AWS RDS (database-1) zerobase 의 police_station 테이블에 데이터를 INSERT 하고 확인하세요.
# zerobase로 이동
use zerobase;

# insert.sql 실행
source insert.sql;
  • AWS RDS (database-1) zerobase 의 police_station 테이블을 SQL 파일로 백업하세요.
mysqldump --set-gtid-purged=OFF -h "database-1.c9igwn95emuj.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p비밀번호 zerobase police_station > backup_police.sql
  • SQL 파일을 실행하여
    AWS RDS (database-1) zerodb 의 police_station 테이블을 zerobase 와 동일하게 만들고 확인하세요.
mysql -h "database-1.c9igwn95emuj.us-east-2.rds.amazonaws.com" -P 3306 -u admin -p비밀번호

use zerodb;

source insert.sql;

0개의 댓글