관리 메뉴

ふたりで

centos7+crontab+mysql+backup+mysqldump 본문

centos7 & rocky9

centos7+crontab+mysql+backup+mysqldump

graykang 2023. 6. 2. 11:40
728x90
반응형
SMALL

centos(linux)에서 shell script를 작성 후 crontab에 등록하여 mysqlDB를 백업하는 방법을 정리한다.

 

1. 특정 mysqlDB를 백업하기 위한 shell script작성.

shell script 이름은 graykangDB_export_import.sh (퍼미션: -rwxr-xr-x. 1 root root)

mv graykangDB_copy.sql $(date '+%y%m%d')_graykangDB_old.sql
mysqldump --no-autocommit --single-transaction --add-drop-database --add-drop-table  --routines --triggers -uroot --password=1******0 graykangDB > graykangDB_copy.sql
rm graykangDB_extra.sql -f
mysqldump  -uroot --password=1******0 graykangDB table1 table2 table3  > graykangDB_extra.sql
mysql -uroot --password=1******0 graykangDB_back < drop_create_graykangDB_back.sql
mysql -uroot --password=1******0 graykangDB_back < graykangDB_copy.sql
mysql -uroot --password=1******0 graykangDB_back < graykangDB_extra.sql

- 스크립트의 첫 번째 동작은 기존 백업된 Data 스크립트를 년월일을 붙여 다른 이름으로 변경한다.

- 두 번째는 백업해야 할 DB를 전체 백업한다.

# 여기까지만 하면 주기적으로 백업을 받는 것만 된다.

   아래 추가된 스크립트들은 백업받은 데이터를 사용하여 백업용 DB로 재구성하는 방법이다.

- 세 번째는 기존에 필수구성 테이블만 백업받았던 스크립트를 제거한다.

- 네 번째는 기본필수구성이 필요한 테이블만 따로 백업한다.

- 다섯 번째는 백업용 DB를 삭재하고 DB만 다시 생성하는 스크립트를 실행한다. drop_create+graykangDB_backup.sql

의 내용

   > drop database graykangDB_back;

   > create database graykangDB_back;

 - 여섯 번째 백업받았던 원본데이터를 백업용으로 drop 하고 create 한 DB에 import 한다.

 - 일곱 번째 필수구성테이블 백업데이터도  drop 하고 create 한 DB에 import 한다.

 

 # mysqldump 명령어 옵션 설명.(보통 dump시 사용되는 옵션만 정리)

 --no-autocommit :

    각각의 dump 되는 table의 앞 뒤에 SET autocommit=0과 commt  구문을 넣어 작성한다.

 --single-transaction :

     dump를 하기 전 transaction isolaton level을 REPEATABLE READ로 변경하고, start transaction을 실행.

     InnoDB와 같은 transaction을 지원하는 테이블을 dump 하기에 좋다.

     blok 없이 snapshot 데이터를 dump 할 수 있도록 한다.

     InnoDB만 snapshot이 가능함.

     dump 하는 동안  최적화된 dump 파일을 만들기 위해, 다른 접속을 통해 DDL작업을 진행해서는 안 됨.

     --lock -tables 옵션과 같이 사용할 수 없다.

     데이터의 크기가 클 경우 --quick 옵션을 추가하여 사용하길 권장.

  --add-drop-database:

     create database 구문 전에 drop database 구문을 추가한다.

  --add-drop-table:

     create table 구문 전에 drop table 구문을 추가한다.

  --routines:

     stored routines 정보를 모두 포함하여 dump 한다.

  --triggers:

     trigger 정보를 모두 포함하여 dump 한다.

    * mysqldump 명령어 option 참조 블로그

      https://code-factory.tistory.com/21

 

mysqldump 사용법

mysqldump MySQL의 대표적인 Logical 백업 프로그램으로서 스토리지 엔진에 상관 없이 백업을 받을 수 있는 tool 입니다. mysqldump 는 기본적으로 dump를 하려고 하는 테이블에 대한 SELECT 권한, dump하려는 vi

code-factory.tistory.com

2. crontab에 1에서 작성한 graykangDB_export_import.sh 등록하기.

crontab -e 명령어 옵션을 사용하면 vi 에디터 형식으로 작성을 할 수 있고 crontab -l로 등록된 걸 확인할 수 있다.

매일 특정 시간(01시 05분)에 동작하도록 아래와 같이 작성 후 저장 후 종료 하면 된다.

[root@localhost ~]# crontab -l
05 01 * * * /root/graykangDB_export_import.sh
[root@localhost ~]#

   * crontab 참조 블로그

https://whitekeyboard.tistory.com/861

 

[Linux CentOS] crontab / cron 설정 (작업 스케줄러)

crontab / cron 소프트웨어 유틸리티 cron은 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 이러한 설정을 규정해 놓은 곳이 crontab이라고 보면 되겠다. 간단히 명령어 3개만 기억하면

whitekeyboard.tistory.com

 

728x90
반응형
LIST
Comments