일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- mysql
- SpringBoot
- nodejs
- Maven
- rocky9
- javascript
- FCM
- ajax
- MSsql
- jquery
- submit
- node.js
- docker
- Eclipse
- popup
- MariaDB
- security
- mybatis
- NextJS
- yona
- pwa
- message
- centos7
- git
- Java
- config
- PM2
- Next.js
- jenkins
- spring3
- Today
- Total
ふたりで
centos7+crontab+mysql+backup+mysqldump 본문
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
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
'centos7 & rocky9' 카테고리의 다른 글
centos7 + rocky-linux9.3 사용자 계정 추가(useradd) (0) | 2024.02.20 |
---|---|
rocky9+pm2+nextjs+start (0) | 2024.01.19 |
centos7+yona(Git사용) (2) | 2020.11.02 |
SVN error E204900 (0) | 2020.05.20 |
centos7 부팅모드 변경 CLI / GUI (0) | 2020.05.14 |