[zero-base/] DS Part 5. SQL - 40일차 스터디 노트

손윤재·2024년 1월 29일

제로베이스 DS 22기

목록 보기
41/55
post-thumbnail

AWS RDS

Amazon Relational Database Service는 AWS에서 제공하는 관계형 데이터베이스 서비스이다.
Cloud 상에 DB를 구축하고 사용할 수 있다.

  1. AWS RDS에 생성한 DB ‘database-1’에 접속
    > mysql -h <엔드포인트> -P <포트> -u <마스터사용자> -p<패스워드>
  1. DB(zerobase)를 생성하고 확인 - DEFAULT CHARACTER SET utf8mb4 옵션 추가
    > CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;
    > SHOW DATABASES;
  1. 사용자(zero)를 추가하고 확인
    // 외부 접속 사용자 추가
    > CREATE USER 'zero'@'%' IDENTIFIED BY 'zerobase';
    // 사용자를 삭제하고 싶다면 실행
    > DROP USER 'zero'@'%';
    
    // 사용자 조회
    > USE mysql;
    > SELECT host, user FROM user;
  1. 사용자(zero)에게 외부에서 접근하여 zerobase를 사용할 수 있는 권한을 부여하고 확인
    > GRANT ALL ON zerobase.* TO 'zero'@'%';
    > REVOKE ALL ON zerobase.* FROM 'zero'@'%';
    
    // 권한 확인
    > SHOW GRANTS FOR 'zero'@'%';

  1. 현재 접속을 종료하고 AWS RDS (database-1)의 zerobase DB에 사용자 zero로 접속
    > exit
    > mysql -h <엔드포인트> -P <포트> -u zero -pzerobase

SQL File

SQL파일생성

  • VSCode의 sql_ws 폴더에서 새파일을 만들 때,
    파일 확장자로 .sql을 입력하면 빈 SQL 파일을 만들 수 있다.

  • 경찰서 정보를 테이블로 생성하는 test01.sql 파일 생성

  • 서울특별시 관서별 5대 범죄 현황 정보를 테이블로 생성하는 test02.sql 파일 생성


SQL파일실행


❕ MySQL 내에서 실행

  • MySQL에 로그인 한 상태에서 SQL 파일을 실행한다.

  • source : SQL 파일을 실행하는 명령어러 대신 \.을 사용할 수도 있다.

    mysql> source /path/file_name.sql
    -- 혹은 --
    mysql> \. /path/file_name.sql
  • SQL 파일이 있는 현재 폴더에서 로그인을 했다면 path는 생략 가능하다.
    // .sql file이 있는 현재 폴더에서 MySQL에 로그인, 동시에 DB로 바로 접근
    C:\Documents\sql_ws % mysql -uroot -p********* db_name
    
    // .sql file 실행
    mysql> source file_name.sql
  • 예제

❕ MySQL 밖에서 실행

  • MySQL에 로그인하지 않은 상태로 외부에서 SQL 파일을 바로 실행한다.

  • DB_name < /path/file_name.sql에서 <은 파일을 데이터베이스로 가져온다.

    % mysql -u user_name -p password DB_name < /path/file_name.sql
  • 예제 : 데이터베이스에 바로 접속하면서 SQL File을 실행한다.

Backup SQL File

데이터베이스나 데이터베이스 내 테이블을 SQL 파일로 만들어 백업할 수 있다.


🔰 Database


❕ 백업파일생성

  • DB의 데이터를 SQL 파일로 만들 때는 mysqldump 명령어를 사용한다.

    • mysqldump 명령어를 사용하는 현재 폴더에 백업 파일을 생성한다.
  • DB_name > backup_file.sql에서 >은 데이터베이스의 데이터를 파일로 내보낸다.

  • 특정 DB의 백업 파일 생성

    % mysqldump -u user_name -p DB_name > backup_file.sql
  • 모든 DB의 백업 파일 생성
    % mysqldump -u user_name -p --all-databases > backup_file.sql
  • 실습: zerobase DB를 백업

❕ DB 복구

  • DB를 백업한 SQL 파일을 실행하여 백업한 그 시점으로 복구한다.

  • 복구하는 방법은 SQL 파일을 실행하는 방법과 동일하다.


❕ DB 이전

  • DB를 백업한 SQL 파일을 활용해 다른 DB로 이전할 수도 있다.

  • 로컬이 아닌 외부 데이터베이스인 AWS RDS로 이전할 수 있다.

    % mysql -h(host) <엔드포인트> -P(Port) <포트> -u <마스터> -p<password>
  • 실습: zerobase DB 백업 파일을 AWS RDS (database-1)로 이전
    • AWS RDS (database-1) 서비스가 사용 가능한 상태에서 접속해야 한다.
    • 백업 파일이 존재하는 경로에서 MySQL에 접속한다.
    C:\Documents\sql_ws % mysql -h database-1.us-east-2.rds.amazonaws.com
    							-P 3306 -u admin -p
    Enter password: ************
    
    mysql> CREATE DATABASE zerobase DEFAULT CHARACTER SET utf8mb4;
    mysql> USE zerobase;
    mysql> source backup_DB_zerobase.sql

🔰 Table

테이블 단위로도 백업할 수 있다.


❕ 백업파일생성

  • Table을 SQL 파일로 만들 때도 mysqldump 명령어를 사용한다.

    • 백업 파일을 만들고자 하는 폴더에서 명령어를 실행한다.
    % mysqldump -u user_name -p DB_name Table_name > backup_file.sql
  • 실습: Local zerobase DB에서 celeb Table을 백업

  • 테이블 내 데이터를 제외하고 테이블 생성 쿼리만 백업할 수 있다.

    • -d 옵션을 추가한다.
    // 특정 Table Schema Backup
    % mysqldump -d -u user_name -p db_name table_name > backup_file.sql
    
    // DB 내 모든 Table Schema Backup
    % mysqldump -d -u user_name -p db_name > backup_file.sql
  • 실습: Local zerobase DB에서 snl_show Table Schema 백업

❕ 복구 및 이전

  • Table을 백업한 SQL 파일을 실행하여 백업한 그 시점으로 복구한다.

  • 복구하는 방법은 SQL 파일을 실행하는 방법과 동일하다.

  • Table을 백업한 SQL 파일을 활용해 다른 DB로 Table을 이전할 수도 있다.

  • 실습: zerobase DB에 있는 celeb Table 백업 파일을 AWS RDS (database-1)로 이전

    • AWS RDS (database-1) 서비스가 사용 가능한 상태에서 접속해야 한다.
    • 백업 파일이 존재하는 경로에서 MySQL에 접속(로그인)한다.
    • zerobase DB로 바로 접근한다.
    • 먼저 zerobase DB 내 celeb Table을 삭제한 후 백업 파일을 실행한다.
    D:\Git\ElaYJ_ws\Study_SQL\sql_ws % mysql -h database-1.us-east-2.rds.amazonaws.com -P 3306 -u admin -p zerobase
    Enter password: ************
    
    mysql> DROP TABLE celeb;
    mysql> \. backup_TB_celeb.sql
profile
ISTP(정신승리), To Be Data Scientist

0개의 댓글