본문 바로가기

데이터베이스(DA, AA, TA)/MySQL

[MySQL] mysqldump로 DB 백업하기

mysql 데이터베이스 백업시 mysqldump를 이용합니다. 개발자들이 사용하는 Workbench나 HeidiSQL 같은 툴에서 백업하는것 역시 mysqldump를 실행하는 것입니다.


전체 데이터베이스를 한 sql파일에 백업하는 것이 가장 간단하지만, 서버 용량 문제로 분할백업을 진행해야하는 경우가 생깁니다. 분할백업 진행 전 테이블별 용량 확인도 가능합니다.


SELECT
     table_name,
     table_rows,
     round(data_length/(1024*1024), 2) as 'DATA_SIZE(MB)',
     round(index_length/(1024*1024), 2) as 'INDEX_SIZE(MB)'
FROM information_schema.TABLES
where table_schema = 'databasename'
GROUP BY table_name
ORDER BY data_length DESC
LIMIT 10;


아래 명령어를 통해 특정 테이블 백업이 가능합니다.

mysqldump -u root -p databasename tablename > tablename.sql


아래 명령어를 통해 데이터 structrue 백업이 가능합니다.

mysqldump -u root -p database --no-data > data_structure.sql


특정 테이블 백업시, 반복작업이 많아 아래와 같은 쉘스크립트를 만들어 테이블백업 자동화하였습니다.

#!/bin/bash
table=$1
mysqldump -u root -p databasename $table > $table.sql