1. 개요

언제 각자의 길을 갈지는 모르겠지만, 아직 MySQL과 MariaDB는 사실 동일하다고 할 수 있다. 이 시간에는 MySQL 시절부터 널리 사용된 백업 방식인 mysqldump를 분석하여 보기로 하겠다.


2. 특징

먼저 특징을 살펴보자.

  • 적은 량의 데이터를 백업할 때 적당하다. 간편하기 때문이다.
  • DB 설치 시 기본으로 포함되어 있다.
  • 백업 파일이 SQL로 떨궈지기 때문에 내용을 확인하고 수정하기 편리하다.
  • 특정 정보나 형식만 골라 백업받을 수 있다.
  • 단, 데이터가 많다면 백업/복구가 매우 느리다.

3. 사용법 

3-1. 기본 사용법

  • $ mysqldump -u[아이디] -p[패스워드] > [저장파일명].sql
  • -p 옵션 후 명시적으로 패스워드를 적지 않으면 mysqldump 명령어 수행시 패스워드를 물어본다.
  • mysqldump에 사용하는 계정은 다음과 같은 권한이 필요하다.
    -> select, show view, trigger, lock tables, file, create, alter database

3-2. 전체 데이터베이스 백업

  • $ mysqldump -uroot -p -A > backup_full.sql
  • 말 그대로 mariadb 전체를 백업 받는다.
  • 이에 대한 복구는 mysql -uroot -p < backup_full.sql

3-3. 특정 데이터베이스 백업

  • 백업 : $ mysqldump -uroot -p hr > backup_hr.sql
  • 복구 : $ mysql -uroot -p --database=hr < backup_hr.sql
  • MariaDB의 데이터베이스는 Oracle의 스키마 개념과 같다. Oracle로 설명하자면, hr이라는 스키마만 백업 받겠다는 명령이다.

3-4. 특정 데이터베이스의 특정 테이블 백업

  • $ mysqldump -uroot -p hr salary > backup_hr_salary.sql
  • 위에서 hr이라는 데이터베이스(=Oracle 스미카)만 백업 받았다면, 이번에는 hr이라는 데이터베이스 안에서도 salary라는 테이블만 백업 받는다.

3-5. 특정 데이터베이스의 테이블의 특정 값만 백업

  • $ mysqldump -uroot -p hr salary -w'emp_no >= 100 and emp_no <= 200' > backup_hr_salary.sql
  • hr이라는 데이터베이스 안의 salary라는 테이블 내에 emp_no가 100 이상 200 이하인 열만 백업 받는다.

3-6. 특정 데이터베이스의 테이블 definition 백업

  • mysqldump -uroot -p hr --no-data > backup_hr_definition.sql
  • hr이라는 데이터베이스를 백업을 받는데, 실제 데이터를 받지는 않고 테이블 definition만 백업을 받는 것이다. 
  • oracle export 백업의 rows=no와 유사한 의미이다.

 

아주 기초적인 mysqldump 에 대하여 설명하였다.