MySQL - Data Export/Import(Restore) (데이터 백업/복원하기)

반응형

 

개요

  • 사용 툴 : MySQL Workbench 8.0.23
  • 목표 : 하나의 데이터베이스의 모든 데이터를 백업하고 복원하기

데이터 백업하기 (Export)

  • Navigator - Administrator - Data Export
    • Tables to Export : 백업 할 데이터베이스와 테이블 선택
      • 데이터베이스의 모든 데이터 혹은 특정 테이블만 백업 가능
    • Object to Export : 백업 할 객체 선택
      • 프로시저와 펑션, 이벤트, 트리거를 함께 백업
    • Export Options : 백업 방식 선택
      • Export to Dump Project Folder
        • 테이블마다 각각의 파일을 생성
        • 백업 소요시간은 느리나 각각의 테이블을 관리 가능
      • Export to Self-Contained File
        • 모든 데이터베이스의 데이터를 하나의 파일로 생성
        • 백업 소요시간은 빠르나 개별적인 테이블의 관리는 불가
      • Create Dump in a Sing Transaction
        • innoDB에서만 사용 가능
        • 일관된 상태로 데이터베이스 백업
        • 즉, 해당 옵션으로 백업 중 데이터베이스에 변경이 있을 경우 해당 내용을 반영 하지 않음
          • 데이터가 잘못된 값을 얻을 수 있음
      • Include Create Schema
        • 데이터베이스의 이름을 포함하여 백업
        • 다른 데이터베이스(스키마) 이름을 사용 할 경우 체크 해제

 

  • Start Export

 

  • 백업 파일 생성 확인


데이터 복원하기 (Import / Restore)

데이터 복원 (Import/Restore)

  • Navigator - Administrator - Data Export
    • Import Options (복원 옵션 선택)
      • Import from Dump Project Folder
        • 여러 파일로 분리되었거나 백업 파일이 존재하는 폴더 선택
        • 하나의 파일로 백업된 파일도 해당 경로를 지정해주면 목록에 출력
      • Import from Self-Contained File
        • 하나의 파일로 백업된 파일 선택
    • Select Database Objects to Import
      • 복원 할 데이터베이스와 테이블을 선택

 

  • Start Import


데이터 복원 확인

  • 데이터베이스의 값 변경
use testdb;
select * from testTable;
update testTable set questionId = '1111111' where id = '3';
# 해당 테이블의 값을 '1111111' 로 변경 (기존 '1')

 

  • 데이터베이스 복원

 

  • 데이터베이스 값 확인
    • 백업 이전의 데이터인 '1'의 값으로 복원이 정상적으로 됨
select * from testTable;


Data Import Error

  • 복원시 아래와 같은 에러 출력
  • 검색해보니 DEFINDER를 지우라는데 내 파일에서는 해당 단어가 존재 않음
  • 그래서 그냥 백업 파일(.sql)을 열고 에러가 표시된 줄을 삭제
ERROR 1227 (42000) at line 20: Access denied;
you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN
privilege(s) for this operation

ERROR 1227 (42000) at line 25:
Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN
privilege(s) for this operation

ERROR 1227 (42000) at line 79:
Access denied;
you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN
privilege(s) for this operation

 

  • 해결


참고

  • Mysql Reference

https://dev.mysql.com/doc/refman/5.7/en/mysqlpump.html

반응형