이게 이렇게 어려운 일이었나..
파일로 떨궈서 쉘에서 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
결과)
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
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
원하는 것을 얻기위해 생각보다 시간을 너무 썼다.. 앞으로 잊지말자.
끝.
'RDB > mysql' 카테고리의 다른 글
SSD 파티션 튜닝 1 (0) | 2020.03.26 |
---|---|
[에러] mysql DB disk 폴더 이동후 재시작 (0) | 2020.03.26 |
[error] This function has none of DETERMINISTIC, NO SQL .. (0) | 2020.03.04 |
[장애] innodb Dead Lock 문제 (0) | 2020.03.03 |
mysql TEXT like 검색 개선 포인트 찾기 1 (0) | 2020.02.07 |