mysql -u root -p PASSWORD --all-databases > all-databases.sql
모든 DB에 대하여 mysql dump 진행하여 all-databases.sql 파일 안에 정보 넣기
현위치의 all-databases.sql 이라는 파일에 대한 백업 ( ex. 999.888.777.666 서버의 /home/sajauser 로 백업을 진행하는 경우 )
scp -P 3022 ./all-databases.sql sajauser@999.888.777.666:/home/sajauser
1. 덤프뜨기
$> mysqldump –u [사용자아이디] -p 데이터베이스명 [테이블명] > 저장될 파일명
예) mysqldump –u growinguser -p mydatabase > growinguser.pe.kr.sql
이렇게 하면 mydatabase라는 DB에 대한 덤프를 뜨게 된다.
테이블에 대해서만 덤프를 뜨고 싶다면
예) mysqldump –u growinguser -p mydatabase member_table > growinguser.pe.kr.member_table.sql
이와 같은 형태로 명령어를 입력해주면 된다.
2. 복구하기
덤프 파일을 이용하여 복구를 하는 방법도 간단하다.
$> mysql –u [사용자아이디] -p [DB명] < 덤프 파일명
예) mysql –u growinguser -p < growinguser.pe.kr.sql
예) mysql –u growinguser -p mydatabase < growinguser.pe.kr.member_table.sql
3. 특정 db의 특정 table에서 원하는 값만 덤프받기
>> edu라는 디비에 a,b,c라는 테이블이 있다고 가정하자. a라는 테이블에서 no가 7 이상이고 10 이하인 값만 덤프를 받고자 한다. 어떻게 하겠는가?
여기서 사용되는 옵션은 -w 이다. 그럼 위 질문에 대한 정답 sql문은 아래와 같다.
mysqldump -u mysql_admin -p edu a -w'no=>7 and no=<10' > edu_a_cond.sql
위와 같이 하면 no가 7~10 범위 안의 데이터만 덤프될 것이다.
위에서 조건문은 -w 다음에 싱글쿼테이션으로 묶어준다. sql에서 사용하는 조건문이 다 될 듯 싶다. 모두 테스트를 해보진 않았다.
4. DB 스키마(Schema)만 백업받기
>>초기에 작성해 놓은 테이블 스키마가 없을때 어떻게 하겠는가?
만약 하나의 테이블이라면 desc 해서 하나하나 다 삽질을 하면 되겠지만 만약 테이블이 수십개 이상이 되는 정도로 많을 때 사용하는 mysqldump옵션은 -d 입니다.
edu라는 디비의 모든 테이블 스키마를 백업받으려면
mysqldump -u mysql_admin -p -d edu > edu_db.sql
edu라는 디비의 a라는 테이블 스키마를 백업받으려면
mysqldump -u mysql_admin -p -d edu a> edu_a_table.sql
mysql -u root -p PASSWORD --all-databases > all-databases.sql
모든 DB에 대하여 mysql dump 진행
'About Data > DB' 카테고리의 다른 글
[Centos7][MariaDB] MariaDB 실습 - 1 : install & Login (0) | 2019.11.22 |
---|---|
[Solved][Ubuntu 18.04][Mysql] How to remove and re install (0) | 2019.07.22 |
[Mysql][Update] 다른 테이블의 값을 또다른 테이블의 값 위치에 UPDATE 예시 (0) | 2019.06.14 |
[Mysql] How to get Null value data in query (0) | 2019.06.10 |
[Mysql][Query] where 범위 조건 쿼리 between 예시 (0) | 2019.06.07 |