반응형

이게 이렇게 어려운 일이었나..

파일로 떨궈서 쉘에서 for문을 돌리는 스크립트를 짜면 되긴 하지만 너무 귀찮았다.

기존에 mysqldump처럼 한줄로 끝내고 싶었다.

그런데 구글신의 내용중 생각보다 재대로 되는 것을 찾는 것이 쉽지 않았다.

결국 방법을 찾고 조각별로 상세히 기록한다.

 

 

# TABLE 와일드 카드 백업방법

 

ex)

가정 : TESTDB 스키마에 root비번은 @12345678 테이블은 MSG_LOG_2019% 에 해당하는모든 테이블을 백업받아 MSG_LOG_DUMP.sql로 만들고 싶다.

 

solution)
mysqldump -uroot -p@12345678 TESTDB `echo "show tables like 'MSG_LOG_2019%';" | mysql -uroot -p@12345678 TESTDB | sed '/Tables_in/d'` > MSG_LOG_DUMP.sql

 

명령어 쪼개서 분석

1) echo "show tables like 'MSG_LOG_2019%';" | mysql -uroot -p@12345678 TESTDB

--> show tables 명령문은 TESTDB 스키마에서 테이블을 검색할 때 사용한다.

 

결과)

Tables_in_TESTDB (MSG_LOG_2019%)
MSG_LOG_201901
MSG_LOG_201902
MSG_LOG_201903
MSG_LOG_201904
MSG_LOG_201905
MSG_LOG_201906
MSG_LOG_201907
MSG_LOG_201908
MSG_LOG_201909
MSG_LOG_201910
MSG_LOG_201911
MSG_LOG_201912

 

2) echo "show tables like 'MSG_LOG_2019%';" | mysql -uroot -p@12345678 TESTDB | sed '/Tables_in/d'

sed '/Tables_in/d'
-->sed ~/d 명령문의 의미는 Tables_in 으로 시작하는 문장을 삭제하시오.

 

참조 : http://millky.com/@origoni/post/664

 

[펌] sed 명령어 사용법

셀 스크립트를 만들다보니 파일 수정해야 할 일이 있는데. cat로 할 수도 있다고 해서 봤지만 완전한 노가다고.... 찾아보니 sed를 사용하면 간단하게 할 수 있었다. 조금 오래된 문서지만 정리가 잘 되어 있어서 추천~ 원문 : http://stone.backrush.com/sunfaq/ljs007.htm

millky.com

결과)

MSG_LOG_201901
MSG_LOG_201902
MSG_LOG_201903
MSG_LOG_201904
MSG_LOG_201905
MSG_LOG_201906
MSG_LOG_201907
MSG_LOG_201908
MSG_LOG_201909
MSG_LOG_201910
MSG_LOG_201911
MSG_LOG_201912

 

3) `echo "show tables like 'MSG_LOG_2019%';" | mysql -uroot -p@12345678 TESTDB | sed '/Tables_in/d'`

--> 역따옴표 ` ` 의미는 결과의 값을 반환하시오

 

역따옴표에 대해서 간과하다 헤맸다...

참조 : https://blog.wiserain.com/1006

 

리눅스에서 큰 따옴표, 작은 따옴표, 역 따옴표 차이

작은 따옴표는 문자열 그대로 >> echo '$HOME' >> $HOME 큰 따옴표는 변수가 가진 값을 >> echo "$HOME" >> /home/directory 역 따옴표는 안의 명령문을 실행한 결과를 반환 >> echo `pwd` >> echo /home/director..

blog.wiserain.com

 

4) 최종쿼리문

mysqldump -uroot -p@12345678 TESTDB `echo "show tables like 'MSG_LOG_2019%';" | mysql -uroot -p@12345678 TESTDB | sed '/Tables_in/d'` > MSG_LOG_DUMP.sql

 

 

원하는 것을 얻기위해 생각보다 시간을 너무 썼다.. 앞으로 잊지말자.

 

끝.

반응형
블로그 이미지

dung beetle

취미는 데이터 수집 직업은 MYSQL과 함께 일하는 DBA의 소소한 일상 이야기

,