본문 바로가기
개발 환경 & 개발 도구/MySQL Workbench

[MySQL Workbench] 효과적인 데이터베이스 Export 방법들 소개

by 민됴리 2024. 3. 26.
반응형

DB를 Export해야 하는 다양한 상황들

요즘은 어디에서나 클라우드를 많이 쓰시는데 저도 그렇습니다. 저는 DB도 클라우드에서 관리하는데 이때 다음과 같이 데이터베이스를 Export(내보내기)해야 하는 상황이 종종 발생합니다.

  • 백업
    • 사이드 프로젝트가 중단/종료돼서 DB 서버 종료. 제가 지금까지 DB를 Export하게 됐을 때 가장 많이 발생했던 상황입니다.
    • 데이터 손실을 방지하기 이해 정기적으로 백업 생성.
  • 마이그레이션
    • 다루는 데이터의 양이 늘어나서 더 큰 DB 서버로 이전
    • 다른 클라우드로 이전. 이번에 해커톤에서 사용했던 DB를 조만간 다른 클라우드로 Import하려고 하는데 그때 Import하는 법도 다뤄보겠습니다.
    • 다른 데이터베이스로 이전
  • 분석 및 보고
    • BI 툴, 분석 소프트웨어 또는 다른 보고 툴에 데이터를 제공하기 위해. 저는 이 목적을 위해 Export한 적은 없지만, 데이터 쪽에서는 꽤 자주 일어난다고 합니다.

MySQL로 구성된 데이터베이스를 편하게 관리하고 사용할 수 있게 해주는 가장 유명한 툴은 MySQL Workbench라고 생각합니다. 데이터베이스 Export도 아주 편리하게 해줍니다. MySQL Workbench에서 Export하는 방법은 크게 두 가지로 'Server > Data Export' 기능과 'Table Data Export Wizard' 기능이 있습니다. 이번 기회에 각 방법의 특징과 방법에 대해 알아보겠습니다. 혹시 MySQL Workbench를 설치하지 않았다면 이 글을 참고해주세요!

 

'Server > Data Export'와 'Tabale Data Export Wizard' 비교 분석

  Server > Data Export Table Data Export Wizard
목적과 사용법 - 데이터베이스 서버 전체 또는 특정 데이터베이스, 선택된 테이블의 데이터를 내보내는데 사용
- 대규모 데이터 백업이나 데이터베이스 전체를 다른 서버로 이전하고자 할 때 주로 사용
- 특정 테이블의 데이터를 내보내는 데 사용되며, 사용자가 데이터베이스 내의 특정 데이터를 더 세밀하게 관리하고자 할 때 유용
- 특정 테이블에서 작업하고 있을 때 직접 접근할 수 있는 옵션
지원하는 형식 - 주로 SQL 파일 형식으로 데이터를 내보냄
- 데이터베이스 구조(스키마), 데이터, 저장 프로시저, 트리거 등을 포함할 수 있음
- CSV 파일 형식으로 데이터를 내보내는 것을 주로 지원
- 이는 데이터 분석이나 다른 응용 프로그램으로 데이터를 이전할 때 유용
기능 - 데이터를 내보낼 때 다양한 세부 설정을 제공
- 예를 들어, 데이터를 내보낼 때 데이터베이스 스키마만 내보내거나, 데이터만 내보내거나, 또는 둘 다 내보낼 수 있음
- 내보내기 작업을 자동화하기 위한 스크립트 생성도 지원
- 주로 데이터 내용을 신속하게 내보내고, 보다 일반적인 데이터 교환 형식으로 사용되는 CSV 파일로 데이터를 저장할 때 사용됨
- 세밀한 데이터 변환 옵션이 필요할 때 사용될 수 있음

 

정리하자면, "Server > Data Export"는 데이터베이스 수준에서의 광범위한 데이터 내보내기 작업에 적합하며, SQL 파일 형식으로 구조와 데이터를 모두 포함하는 내보내기를 지원합니다. 반면에, "Table Data Export Wizard"는 특정 테이블 데이터를 CSV 파일로 내보낼 때 유용하며, 보다 구체적이고 세밀한 데이터 내보내기 작업에 적합합니다. 목적에 따라 적절한 기능을 선택하여 사용하면 됩니다.

 

'Server > Data Export'로 DB Export하기

데이터베이스에 연결합니다. 연결된 데이터베이스 세션의 상단 메뉴에서 Server > Data Export를 선택합니다.

 

내보낼 데이터베이스를 선택할 수 있는 화면이 나타납니다. 하나 또는 여러 데이터베이스를 선택할 수 있습니다. 특정 테이블만 내보내고 싶다면, 데이터베이스를 확장하여 특정 테이블을 선택할 수 있습니다.

 

데이터의 저장 방식을 고르고 데이터를 Export할 폴더의 경로와 이름을 지정합니다. 'Export to Dump Project Folder'와 'Export to Self-Conatined File' 두 가지 방식이 있으며 각각의 방식에 대한 설명은 아래와 같습니다.

데이터
저장 방식
설명 저장 예시
Export to
Dump
Project Folder
- 선택한 데이터베이스의 각 테이블 데이터와 스키마가 별도의 파일로 분리되어 저장됨
- 결과적으로 지정된 폴더 내에 여러 파일을 생성함
- 데이터를 조금 더 조직적으로 관리하고자 할 때 유용함
- 각 테이블이나 객체에 대한 별도의 SQL 파일이 생성되기 때문에, 특정 테이블이나 객체만을 선택적으로 복원하거나 수정할 수 있음
- 데이터와 스키마를 개별 파일로 관리할 수 있어, 대규모 데이터베이스의 경우 데이터 관리와 복원이 더 유연해짐
Export to
Self-Contained File
 - 전체 데이터베이스 또는 선택한 테이블들이 하나의 큰 SQL 파일로 내보내짐
- 이 파일 안에는 데이터베이스 생성, 테이블 생성, 데이터 삽입 등을 위한 SQL 명령문이 모두 포함됨
- 간편한 데이터베이스 전체 백업이나 이전을 목적으로 할 때 적합함
- 단일 파일로 되어 있기 때문에, 복원 과정이 간단하며 다른 시스템으로의 데이터 이전 시에도 용이
- 작은 규모의 데이터베이스 또는 단일 데이터베이스를 완전히 백업하고 싶을 때 유리함

정리하자면, "Export to Dump Project Folder"는 데이터를 좀 더 세분화하여 관리하고 싶을 때, 또는 특정 테이블이나 객체에 대해 더 유연한 복원 옵션이 필요할 때 적합합니다. 반면, "Export to Self-Contained File"은 데이터베이스 전체를 단순화된 형태로 백업하고 싶거나, 한 번에 쉽게 복원하고자 할 때 좋은 선택입니다. 사용자의 목적과 필요에 따라 적절한 옵션을 선택하면 됩니다.

 

모든 설정을 마쳤다면, "Start Export" 버튼을 클릭하여 Export 과정을 시작하세요.

 

Export 과정이 시작되면, 진행 상황을 보여주는 화면이 나타납니다. 이 화면에서 현재 진행 상태를 확인할 수 있습니다.내보내기 작업이 완료되면, 성공적으로 완료되었는지 여부를 알려주는 메시지가 나타납니다.

 

마지막으로, 지정한 위치에 파일이 생성되었는지,내보낸 데이터의 내용이 정확한지, 필요한 데이터가 모두 포함되어 있는지 확인합니다.

 

'Table Data Export Wizard'로 DB Export하기

데이터베이스 네비게이터에서 데이터베이스를 확장하여 테이블 목록을 볼 수 있습니다. 내보내고자 하는 테이블을 마우스 오른쪽 버튼으로 클릭하고, 나타나는 메뉴에서 "Table Data Export Wizard"를 선택합니다. 사진에서는 두 개의 테이블을 선택했지만, 'Table Data Export Wizard'는 한 번에 하나의 테이블만 Export해줍니다.

 

"Table Data Export Wizard"가 시작되면, 내보낼 데이터에 대한 세부 옵션을 설정할 수 있는 화면이 나타납니다. 내보낼 파일의 형식, 문자 인코딩, 열 구분자, 문자열 구분자 등을 설정할 수 있습니다. "Browse" 버튼을 클릭하여 파일을 저장할 경로를 찾고 파일 이름을 입력합니다. 'Server > Data Export' 때와는 달리 경로를 자동으로 지정해주지 않습니다.

 

화면에 보이는 몇 가지 옵션들에 대한 추가 설명입니다. 필요에 따라 사용하시면 됩니다.

  • Row offset: 데이터 내보내기를 시작할 행의 위치를 지정 때 사용. 예를 들어, "Row Offset"을 100으로 설정하면, 처음 100개 행을 건너뛰고 101번째 행부터 데이터 내보내기가 시작됨. 대규모 데이터베이스에서 일부 데이터만을 샘플링하거나 분석할 때 등 특정 범위의 데이터만 내보내고 싶을 때 유용.
  • Count: 내보낼 데이터 행의 총 수를 제한할 때 사용. 지정된 수만큼의 행 데이터만 내보냄. 테스트 또는 데모 목적으로 데이터베이스의 일부 데이터만 추출하고 싶을 때 등 데이터베이스에서 일정 수의 데이터만 필요하거나, 데이터 세트의 크기를 제한하고 싶을 때 유용.
  • Advanced: 인코딩 유형, 날짜 및 시간 형식, 라인 종료 문자(line terminators) 설정 등   내보내기 과정에서 적용할 수 있는 추가 옵션들을 제공. 다른 시스템에서 데이터를 읽을 때 필요한 특정 인코딩이나 날짜 형식을 지정해야 할 때 등 데이터를 특정 형식이나 요구사항에 맞게 조정해야 할 때 유용.
  • Export to local machine: 데이터를 사용자의 컴퓨터나 서버와 같은 로컬 환경에 내보내고 저장할 때 사용. 이 옵션이 체크되지 않으면, 클라우드 서비스나 원격 서버에만 데이터가 저장되니 주의!

 

모든 설정을 완료한 후, 'Next' 버튼을 클릭하여 내보내기 과정을 시작합니다. 내보내기 과정이 성공적으로 완료되면, 오른쪽 화면이 보일 것입니다. 이제 설정한 위치에서 생성된 파일을 찾아볼 수 있습니다.

 

Export를 하는 과정에서 정말 다양한 에러가 발생할 수 있습니다. 아래는 제가 겪은 에러들과 그 해결책이며, 추후 새로운 에러를 접할 때마다 추가하겠습니다.

  • 인코딩 문제: 데이터에 특정 문자가 포함되어 있고, 해당 문자가 선택된 파일의 인코딩으로 인코딩될 수 없을 때 발생. 위 사진에서 보이는 에러는  특정 유니코드 문자('\u2014', 대시 기호에 해당)를 CP949 인코딩으로 변환할 수 없어 발생했음. 해결 방법은 내보내려는 데이터 파일의 인코딩을 UTF-8로 변경하는 것. 아예 테이블을 만들 때 UTF-8 인코딩을 사용하는 것도 방법.

 

마치며

이상으로 MySQL Workbench를 사용하여 데이터베이스를 Export하는 다양한 방법들과 그 특징들에 대해 알아봤습니다. 필요에 따라 적절한 방법을 고르는 것이 제일 중요하며, 혹시 중간에 에러를 마주치더라도 당황하지 말고 침착하게 해결하시면 됩니다!

반응형