Cs

16. 리눅스(Linux) 쉘 스크립트(Shell Script) - DB 백업 스크립트-Mysqldump

ITSEONG 2022. 4. 27. 20:31

쉘 스크립트에서의 유의사항

 

java나 php 등 다른 언어에서는 변수를 사용하기 위해서는 변수 타입을 선언하거나, $를 붙여 줘야 한다. 하지만 쉘 스크립트에서는

 

1. 변수를 선언할 때 변수명만 적어주면 된다. 단 이름에 숫자는 포함될 수 있지만 숫자로 시작될 수 없다.

ex) name="itseong"(0) , name1(0), 1name(x)

2. 변수는 대, 소문자를 구별한다.

3. 변수에는 모든 값이 문자열로 저장된다.

4. 값을 사용할 때는 변수명 앞에 특수문자'$'를 붙여 사용한다.

ex) $name, ${name} *{}의 차이는 문자열을 붙여서 쓸려면 {}이 필요하다.

5. 값을 대입할 때는 특수문자를 '$'를 사용하지 않는다. 

ex) name=1234, name='itseong'

6. 등호를 사용할 때는 등호 앞뒤로 공백이 없어야 한다.

ex) num=14, name='itseong'

#!/bin/bash

DB_name="DatabaseName"
DB_BackUpDir="/home/User/db_backUpDir"
DB_BackUpDate="date + %Y%m%d%H%M%S" #ex 20220427195000

# DB BACKUP
mysqldump --login-path=dbbackup ${DB_name} | gzip > ${DB_BackUpDir}/${DB_name}-${DB_BackUpDate}.sql.gz
# 2차 백업(외부 서버)
scp "파일 위치" uesr@hostName & ip :"저장 경로"
# key를 입력하지 않은 이유는 ssh-copy-id로 경로를 등록하였다.

# 7일이 지난 파일 삭제
find ${DB_BackUpDir} -ctime +7 -exec rm -f {} \;
# 5분이 지난 파일을 지우고 싶을때는 cmin +5 을 사용하면 된다.
# 주의 경로에 아무것도 들어가지 않으면 전체 데이터를 삭제할 수 있다. 조심해야 한다.

#ssh-copy-id로 등록 ssh 접속후 명령어 실행
ssh user@hostName & ip "cmd1; cmd2"

오늘은 DB 백업 스크립트를 작성하면서 mysqldump에 대해 알아보려 한다.

 

파일 추출

# 전체 DB를 백업할 때 -h localhost일때는 생략
mysqldump -h 192.168.0.1 -u user -p password -A > 파일명.sql

# 특정 db를 백업할 때
mysqldump -h 192.168.0.1 -u user -p password DB명 > 파일명.sql

# 특정 db 테이블을 백업할 때
mysqldump -h 192.168.0.1 -u user -p password DB명 테이블명 > 파일명.sql

# 특정 db 테이블1, 테이블2, 테이블3 들을 백업할 때
mysqldump -h 192.168.0.1 -u user -p password DB명 테이블명1, 테이블명2, 테이블명3 > 파일명.sql

 

파일 삽입

# 전체 DB를 삽입할 때
mysqldump -h 192.168.0.1 -u user -p password -A < 파일명.sql

# 특정 db를 삽입할 때
mysqldump -h 192.168.0.1 -u user -p password DB명 < 파일명.sql

 

압축 파일로 추출 시

# 전체 DB를 백업할 때 -h localhost일때는 생략

1:mysqldump -u user -p password -A > 파일명.sql
2:mysqldump -u user -p password -A | gzip > 파일명.sql.gz
3:mysqldump -u user -p password -A | gzip -9 > 파일명.sql.gz
4:mysqldump -u user -p password -A | zip > 파일명.sql.zip
5:mysqldump -u user -p password -A | bzip2 > 파일명.sql.bz2

1번은 압축하지 않고 추출할 때

2번은 gzip으로 추출할 때

3번은 gzip의 최고 압축률로 추출할 때

4번은 zip으로 추출할 때

5번은 biz2로 추출할 때

아래는 외부의 결과를 참고하였다.

위 추출의 결과 https://bdoga.com/how-to-compress-mysqldump-output/

압축을 할 때 시간을 중요시하면 gzip이나 zip을 시간보단 최고의 압축률을 중요시할 때는 bzip2를 사용하면 좋다.

 

오늘은 MysqlDump에 대해 알아보았다.

반응형