[db] mysql dump

덤프뜨기

전체 database 덤프

1
2
3
# -A 또는 --all-databases 옵션
mysqldump -u[아이디] -p[패스워드] -A > 경로/파일명.sql
mysqldump -u[아이디] -p[패스워드] --all-databases > 경로/파일명.sql

특정 database 또는 특정 table만 덤프

1
2
3
4
5
# 특정 database
mysqldump -u[아이디] -p[패스워드] [database명] > 경로/파일명.sql

# 특정 table
mysqldump -u[아이디] -p[패스워드] [database명] [table] > 경로/파일명.sql

테이블 스키마만 덤프

데이터 없이 테이블 구조(스키마)만 받을 때 사용한다

1
2
3
# -d 또는 --no-data 옵션
mysqldump -u[아이디] -p[패스워드] -d [database명] > 경로/파일명.sql
mysqldump -u[아이디] -p[패스워드] --no-data [database명] > 경로/파일명.sql

특정 조건으로 덤프

특정 database의 특정 table에서 원하는 값만 덤프받고 싶을 경우 사용한다.
ex) test db의 employees 테이블에서 emp_no1 이상 10이하인 값만 덤프를 받고자 할 때

1
2
# -w 옵션을 사용한다. 조건은 ''로 묶어줘야 한다
mysqldump -u[아이디] -p[패스워드] [database명] [table명] -w 'emp_no >= 1 and emp_no <= 10'

특정상황

  1. Unkown table ‘COLUMN_STATISTICS’ in information_schema
    mysql 8 부터 추가된 옵션 떄문이라고 함. mysql dump에 --column-statistics=0 옵션을 추가해주면 됨
    https://serverfault.com/questions/912162/mysqldump-throws-unknown-table-column-statistics-in-information-schema-1109

복구하기

1
mysql -u[아이디] -p[패스워드] [데이터베이스명] < 덤프파일명.sql

덤프파일내에 database 생성 구문이 있을 경우 지정된 데이터베이스는 무시된다.